15-10-2023
Yadis — сетевой протокол для обнаружения сервисов OpenID, OAuth и XDI с использованием Yadis ID. Изначально предназначенный для обнаружения сервисов цифровой идентификации, Yadis легко может быть использован и для других сервисов.
Yadis ID может быть обычным URL или более новым XRI i-name, где i-name должен разрешаться в URL. Так называемый Yadis URL либо равен Yadis ID (если это URL) либо разрешенному URL из i-name.
Кроме того, Yadis специфицирует, как использовать Yadis URL, чтобы получить дескриптор сервиса, называемый Дескриптор сервиса Yadis. Этот дескриптор следует формату XRDS и объединяет несколько сервисов авторизации и аутентификации в Yadis URL. Дескрипторы сервисов могут иметь параметры.
Содержание |
Yadis следует парадигме REST, которая хорошо себя зарекомендовала в web-разработке. Основываясь на предположении, что идентификаторы могут быть адресованы через URL или другие идентификаторы (такие, как i-names XRI), которые могут быть разрешены в URL, Yadis ассоциирует XRDS-документ (формат XML, описывающий возможности) с каждым URL, который выражает ассоциированные возможности или сервисы. Владелец идентификатора Yadis может выбрать, какие сервисы он хочет использовать в своем документе XRDS. После получения документа, зависимая сторона (например, веб-сайт, принимающий идентификатор Yadis), может выбрать подходящий сервис, например протокол для аутентификации. Это позволяет существующим сайтам, таким как блоги, легко реализовать базовую функциональность Yadis — например, перенаправлять приходящих на блог пользователей к релевантной информации о владельце блога, в то же время позволяя построить более сложные приложения (например, отправлять сложные запросы о владельце сайта прямо на Yadis-сайт)
Документ о возможностях, ассоциированных с URL находится:
X-XRDS-Location
,<meta http-equiv="X-XRDS-Location" content="http://example.com/yadis.xml">
,application/xrds+xml
по GET-запросу к URL идентификатора.Разработчики могут выбирать, что именно реализовывать, основываясь на разных факторах, например, есть ли доступ к серверной стороне идентификатора.
Здесь приведен образец XRDS-документа возможностей:
<?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)" xmlns:openid="http://openid.net/xmlns/1.0"> <XRD> <Service priority="50"> <Type>http://openid.net/signon/1.0</Type> <URI>http://www.myopenid.com/server</URI> <openid:Delegate>http://smoker.myopenid.com/</openid:Delegate> </Service> <Service priority="10"> <Type>http://openid.net/signon/1.0</Type> <URI>http://www.livejournal.com/openid/server.bml</URI> <openid:Delegate>http://www.livejournal.com/users/frank/</openid:Delegate> </Service> <Service priority="20"> <Type>http://lid.netmesh.org/sso/2.0</Type> <URI>http://mylid.net/liddemouser</URI> </Service> <Service> <Type>http://lid.netmesh.org/sso/1.0</Type> </Service> </XRD> </xrds:XRDS>
Такой XRDS-документ, полученный для данного URL с использованием любого из перечисленных механизмов, выражает следующую информацию:
Yadis был предложен разработчиками протоколов Light-Weight Identity (LID) и OpenID. К этому сотрудничеству присоединились члены OASIS, Технический Комитет XRI.
Yadis является открытой инициативой, так что другие разработчики начинают использовать описания XRDS, пользуясь возможностью выбирать баланс между легкостью реализации, с одной стороны, и количеством реализованого функционала.
Yadis.