如何使用 OpenID Connect WebFinger 端点?

Posted

技术标签:

【中文标题】如何使用 OpenID Connect WebFinger 端点?【英文标题】:How to use the OpenID Connect WebFinger Endpoint? 【发布时间】:2018-04-17 06:15:06 【问题描述】:

阅读description here 上面写着:

WebFinger — 为给定用户启用 OpenID Connect 提供程序的动态发现,基于他们的电子邮件地址或其他一些信息。

谁能举例说明这是如何工作的(描述有点抽象)?

【问题讨论】:

【参考方案1】:

WebFinger 是在RFC7033 中定义的协议。 section 3.1中有完整的例子:

3.1. OpenID Connect 的身份提供者发现

假设 Carol 希望通过她访问的网站进行身份验证 OpenID 连接。她会向网站提供她的 OpenID 连接标识符,比如 carol@example.com。访问的网站 将执行 WebFinger 查询以查找 OpenID Connect 提供者。由于该站点只对一个特定链接感兴趣 关系,WebFinger 资源可能使用“rel”参数作为 在第 4.3 节中描述:

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

服务器可能会这样响应:

HTTP/1.1 200 OK
 Access-Control-Allow-Origin: *
 Content-Type: application/jrd+json

   "subject" : "acct:carol@example.com",
   "links" :
   [
     
       "rel" : "http://openid.net/specs/connect/1.0/issuer",
       "href" : "https://openid.example.com"
     
   ]
 

由于“rel”参数仅用于过滤链接关系 由资源返回,响应中的其他名称/值对, 包括任何别名或属性,将被返回。另外,由于 不保证支持“rel”参数,客户端必须 不要假设“链接”数组将只包含请求的链接 关系。

【讨论】:

这只是一个插图还是一个真实的规格?

以上是关于如何使用 OpenID Connect WebFinger 端点?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证每个用户可以使用 OAuth 和 OpenID Connect 访问哪些资源?

如何在 ADFS 服务器上使用 OpenID Connect 获取用户名

OpenId Connect 如何保护资源服务器免受客户端模拟?

Google OpenID Connect:如何验证 id_token?

如何确定用户是不是仍在使用 PingFederate OpenID Connect 隐式客户端流登录?

如何使用带有 OpenId Connect 的刷新令牌在 asp.net 核心中处理过期的访问令牌