rest - 发现 OpenID Connect 提供商发行者

标签 rest oauth-2.0 openid openid-connect webfinger

在 OpenID Connect Discovery 1.0 规范中,User Input using E-Mail Address Syntax 部分他们有这个例子:

  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:joe@example.com",
   "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:myrealname@yahoo.com" \
    --data-urlencode "rel=http://openid.net/specs/connect/1.0/issuer"

我也尝试过

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

其中一些。但我得到的只是 404 Not Found

也许我做错了什么,或者互联网上可能没有地方可以真正返回上面示例中所示的 200 OK

我的问题是,给定一个 OpenID(我的意思是用户在这里输入的内容

enter image description here

),如何确定 OpenID 提供商发行者在哪里?换句话说,如果我想允许通过 OpenId Connect 登录,我是否必须保留我自己的从 OpenID 模式到 OpenID 颁发者的映射?

最佳答案

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:mike@seed.gluu.org" \
    --data-urlencode "rel=http://openid.net/specs/connect/1.0/issuer"

关于rest - 发现 OpenID Connect 提供商发行者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352532/

相关文章:

openid - 向 OpenID 提供商请求电子邮件地址

openid - 委派的 openid 在slashdot.org 上不起作用

asp.net - 未找到 OpenID 端点 - 依赖方超时选项

java - Jersey 默认媒体类型(如果不存在 Accept header )

android - 如何将 GoogleAuthUtil.getToken 返回的 token 与我的 App Engine 后端一起使用

android - 防止未经授权访问 Restful API

java - 通过服务帐户 key 访问 Google Sheets API

ssl - 尝试获取数据时出现 Twitter SSL 错误

javascript - 从 CasperJS 调用 Facebook API?

rest - 在 ServiceStack 中组合 URL 和 POST 变量