Yadis
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-сайт)
Обнаружение дескриптора сервиса Yadis
правитьДокумент о возможностях, ассоциированных с URL находится:
- В нестандартном HTTP-заголовке
X-XRDS-Location
, - В эквивалентном meta-теге в секции HEAD HTML-документа
<meta http-equiv="X-XRDS-Location" content="http://example.com/yadis.xml">
, - или отдается при запросе специального MIME-типа
application/xrds+xml
по GET-запросу к URL идентификатора.
Разработчики могут выбирать, что именно реализовывать, основываясь на разных факторах, например, есть ли доступ к серверной стороне идентификатора.
Документы XRDS
правитьЗдесь приведен образец 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 с использованием любого из перечисленных механизмов, выражает следующую информацию:
- Этот URL является URL идентификатора Yadis.
- Этот URL поддерживает протокол OpenID, через два сервера и два делегата.
- Этот URL поддерживает версию 1.0 и версию 2.0 протокола LID, с помощью делегата.
- Для входа пользователей, владелец URL предпочитает использование учетных записей их LiveJournal и протокол OpenID (приоритет 10). Если это невозможно, (например, зависимая сторона не поддерживает OpenID, или сервер LiveJournal недоступен), владелец хотел бы использовать URL LID http://mylid.net/liddemouser (приоритет 20), или сервис MyOpenID (приоритет 50).
LID, OpenID и сообщество разработчиков
правитьYadis был предложен разработчиками протоколов Light-Weight Identity (LID) и OpenID. К этому сотрудничеству присоединились члены OASIS, Технический Комитет XRI.
Yadis является открытой инициативой, так что другие разработчики начинают использовать описания XRDS, пользуясь возможностью выбирать баланс между легкостью реализации, с одной стороны, и количеством реализованного функционала.
См. также
правитьСсылки
править- Проект Yadis (англ.)
- Реализации Yadis (англ.)
- Раздел о Yadis на OpenIDEnabled.com (англ.)
Для улучшения этой статьи желательно:
|