Interested Article - Yadis
- 2021-05-05
- 1
Yadis — сетевой протокол для обнаружения сервисов OpenID , OAuth и с использованием Yadis ID. Изначально предназначенный для обнаружения сервисов цифровой идентификации, Yadis легко может быть использован и для других сервисов.
Yadis ID может быть обычным URL или более новым XRI , где i-name должен разрешаться в URL. Так называемый Yadis URL либо равен Yadis ID (если это URL) либо разрешенному URL из i-name.
Кроме того, Yadis специфицирует, как использовать Yadis URL, чтобы получить дескриптор сервиса, называемый Дескриптор сервиса Yadis . Этот дескриптор следует формату и объединяет несколько сервисов авторизации и аутентификации в 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
Здесь приведен образец -документа возможностей:
<?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>
Такой -документ, полученный для данного URL с использованием любого из перечисленных механизмов, выражает следующую информацию:
- Этот URL является URL идентификатора Yadis.
- Этот URL поддерживает протокол OpenID , через два сервера и два делегата.
- Этот URL поддерживает версию 1.0 и версию 2.0 протокола , с помощью делегата.
- Для входа пользователей, владелец URL предпочитает использование учетных записей их LiveJournal и протокол OpenID (приоритет 10). Если это невозможно, (например, зависимая сторона не поддерживает OpenID, или сервер LiveJournal недоступен), владелец хотел бы использовать URL http://mylid.net/liddemouser (приоритет 20), или сервис MyOpenID (приоритет 50).
LID, OpenID и сообщество разработчиков
Yadis был предложен разработчиками протоколов и OpenID . К этому сотрудничеству присоединились члены OASIS , Технический Комитет XRI .
Yadis является открытой инициативой, так что другие разработчики начинают использовать описания , пользуясь возможностью выбирать баланс между легкостью реализации, с одной стороны, и количеством реализованного функционала.
См. также
Ссылки
- (англ.)
- (англ.)
- (англ.)
- 2021-05-05
- 1