2014-12-08 7 views
4

В OpenID Connect Discovery 1.0 спецификации, раздел User Input using E-Mail Address Syntax они имеют следующий пример:Discover OpenID Connect Provider Эмитент

GET /.well-known/webfinger 
    ?resource=acct%3Ajoe%40example.com 
    &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer 
    HTTP/1.1 
    Host: example.com 

    HTTP/1.1 200 OK 
    Content-Type: application/jrd+json 

    { 
    "subject": "acct:[email protected]", 
    "links": 
    [ 
    { 
     "rel": "http://openid.net/specs/connect/1.0/issuer", 
     "href": "https://server.example.com" 
    } 
    ] 
    } 

Я попытался

curl -GLv http://yahoo.com/.well-known/webfinger \ 
    --data-urlencode "resource=acct:[email protected]" \ 
    --data-urlencode "rel=http://openid.net/specs/connect/1.0/issuer" 

Я также попытался

curl -GLv http://gmail.com/.well-known/webfinger \ 
    --data-urlencode "resource=acct:[email protected]" \ 
    --data-urlencode "rel=http://openid.net/specs/connect/1.0/issuer" 

среди немного. Но все, что я получаю, это 404 Not Found.

Возможно, я делаю что-то не так, или может быть не место в Интернете, которое фактически вернет 200 OK, показанный в приведенном выше примере.

Мой вопрос, дается OpenID (я имею в виду то, что пользователь здесь

enter image description here

), как определить, где OpenID Provider Эмитент? Другими словами, если я хочу разрешить логины через OpenId Connect, то у меня есть, чтобы сохранить мою собственную карту от шаблонов OpenID до эмитентов OpenID?

ответ

2

OpenID Connect отличается от OpenID 2.0. Yahoo поддерживает OpenID 2.0, но не поддерживает OpenID Connect + Discovery еще, следовательно, 404. Вот это место в Интернете, который возвращает 200 OK:

curl -GLv https://seed.gluu.org/.well-known/webfinger \ 
    --data-urlencode "resource=acct:[email protected]" \ 
    --data-urlencode "rel=http://openid.net/specs/connect/1.0/issuer" 
+0

Это работает! Теперь, поскольку это, похоже, единственное место, которое реализует OpenId Connect Discovery, как я должен обрабатывать обнаружение? Моя собственная таблица поиска? –

+2

можно реализовать функциональное OpenID Connect Discovery без части webfinger: просто спросите пользователя о доменном имени вместо имени учетной записи/имени пользователя и вытащите метаданные OpenID Connect непосредственно из https: // /.well-known/openid-configuration; существует довольно много реализаций OpenID Connect, которые соответствуют этому; это менее гибкий wrt. привязка между пользователями и доменами, и пользователь должен знать домен для OP, который делает его более сложным; например для выбора Google нужно было бы ввести «accounts.google.com»; вы можете предложить большие потребительские OP в выпадающем меню –

1

WebFinger спецификации является относительно новым и OpenID Connect еще новее, так пока еще широко не развернуто. Вы можете получить информацию из моего личного счета:

$ локон https://packetizer.com/.well-known/webfinger?resource=acct%3Apaulej%40packetizer.com

У меня нет OpenID Connect реализован (пока), но свистеть мне, если вы хотите проверить с общими запросами WebFinger. Я могу заставить свой сервер испускать все, что вы хотите проверить.