OpenID Connect webfinger 端点是用户帐户到 OpenID Connect 提供者的映射吗?
Posted
技术标签:
【中文标题】OpenID Connect webfinger 端点是用户帐户到 OpenID Connect 提供者的映射吗?【英文标题】:Is the OpenID Connect webfinger endpoint a map of user account to OpenID Connect providers? 【发布时间】:2018-04-17 07:42:13 【问题描述】:在this question 中,示例答案以:
假设 Carol 希望对她使用 OpenID Connect 访问的网站进行身份验证。她会向网站提供她的 OpenID Connect 标识符,例如 carol@example.com。被访问的网站将执行 WebFinger 查询以查找 OpenID Connect 提供程序。
所以听起来example.com
还不知道哪个 OpenID 连接提供者可以验证 Carol?它必须使用 Carol 的电子邮件地址作为查找键来找出哪些 OpenID Connect 提供商可以对她进行身份验证?
很多网站都有 Authenticate with Github 或 Authenticate with Google,但在这种情况下,网站似乎只是根据电子邮件地址找出身份验证提供程序希望进行身份验证的人。因此,该站点无需选择身份验证提供商,而是询问电子邮件地址,然后确定用户可以使用哪个身份验证提供商。所以顺序是这样的:
1) 用户输入电子邮件地址(或用户 ID) 2) 服务器使用电子邮件地址/用户 ID 查找身份验证提供程序3) 服务器显示用户可以从中选择的身份验证提供程序列表
我理解正确吗?
【问题讨论】:
【参考方案1】:听起来 example.com 还不知道哪个 OpenID 连接提供商可以验证 Carol?
你是对的。 WebFinger 协议的作用是确定与 OpenID 连接标识符关联的 OpenID 连接提供程序。
当网站显示“使用 Github 进行身份验证”时,它的 OpenID 连接提供程序已硬编码 (Github),并且未实现 WebFinger。
【讨论】:
您是否偶然知道一个在线示例来演示此功能? 这是python implementation。【参考方案2】:OpenID Provider Issuer Discovery 是一个可选的发现服务依赖方通过带外机制知道 OP 的颁发者位置。或使用需要提供网站的 webfinger
resource = 作为发现请求主题的目标最终用户的标识符。
host = 托管 WebFinger 服务的服务器。
rel = 标识正在请求其位置的服务类型的 URI。
恕我直言,提供的example from RFC 7033 具有误导性。许多提供商没有很好地从“carol@example.com”确定发行者。 (至少我能找到)
我tried a few email addresses 只能继续发送回复。 (进一步的示例显示了一个简单的 http get,但 OpenID Connect Discovery 需要 https)
我确实收到了“will@willnorris.com”来发送回复。 (请参阅 Will Norris 贡献的https://indieweb.org/WebFinger)
我也是使用 OpenID Connect 的 webfinger 发现,方便也是一个安全问题。
我能够根据日期为 2010 年的条目执行 some discovery on an bradfitz@gmail.com,但它不像示例中描述的 webfinger 查询那么简单。
也许其他人会回应。
通常网站必须注册(客户 ID),这可以通过dynamically 与他们希望与之合作的每个 OpenID 连接提供商进行。
【讨论】:
我更新了我的问题中的引用。据说它直接取自规范。以上是关于OpenID Connect webfinger 端点是用户帐户到 OpenID Connect 提供者的映射吗?的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak, openId-connect userInfo