OpenID Connect的Webfinger端点是否为用户帐户与OpenID Connect提供程序之间的映射?

3
这个问题中,示例答案开始于:

假设Carol希望使用OpenID Connect来验证她访问的网站。她会向该网站提供她的OpenID Connect标识符,例如carol@example.com。访问的网站将执行WebFinger查询,寻找OpenID Connect提供者。

因此,看起来example.com还不知道哪个OpenID Connect提供者可以验证Carol?它必须使用Carol的电子邮件地址作为查找密钥,以找出哪些OpenID Connect提供者可以对她进行身份验证?
很多网站都有“使用Github进行身份验证”或“使用Google进行身份验证”,但在这种情况下,网站看起来只是基于希望进行身份验证的人的电子邮件地址来确定身份验证提供者。因此,网站要求输入电子邮件地址,然后确定用户可以使用哪个身份验证提供程序,而非用户选择身份验证提供程序。所以序列大致如下:
  • 1)用户输入电子邮件地址(或用户名)
  • 2)服务器使用电子邮件地址/用户名查找身份验证提供者
  • 3)服务器显示用户可以从中选择的身份验证提供程序列表

    我理解得对吗?

2个回答

2
听起来example.com还不知道哪个OpenID Connect提供方可以认证Carol,是吗? 你说得对。这是WebFinger协议的作用,用于确定与该OpenID Connect标识符相关联的OpenID Connect提供方。 当一个网站显示“使用Github进行身份验证”时,它已经硬编码了它的OpenID Connect提供方(Github),并且没有实现WebFinger。

你知道有没有在线示例演示这个的? - Ole
这里有一个Python实现:https://pypi.python.org/pypi/webfinger2。 - Ortomala Lokni

1

OpenID提供者发现是一个可选的发现服务,Relying Party通过一种带外机制知道OP的Issuer位置。或者使用需要提供网站的WebFinger。

  • resource = 目标End-User的标识符,是发现请求的主题。

  • host = 托管WebFinger服务的服务器。

  • rel = 标识正在请求其位置的服务类型的URI。

在我看来,RFC 7033中的示例是误导性的。从“carol@example.com”确定发行者并没有被许多提供商很好地实现。(至少我能找到的)

尝试了几个电子邮件地址,只有一个能够发送响应。 (此外,该示例显示了一个简单的http get,但OpenID Connect Discovery需要https)

我已经让"will@willnorris.com"发送了回复。(请参阅https://indieweb.org/WebFinger,其中Will Norris作出了贡献。)
我也使用了OpenID Connect webfinger发现,这很方便,但也存在安全隐患。
我能够对2010年的一个条目进行一些发现,bradfitz@gmail.com,但这并不像示例中描述的那样简单的webfinger查询。
也许其他人会回复。
通常,网站必须注册(客户端ID),可以通过动态地与他们希望合作的每个OpenID连接提供程序执行此操作。

我在我的问题中更新了引用。据说它直接来自规范。 - Ole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接