Facebook 的 OpenID Connect 配置

Posted

技术标签:

【中文标题】Facebook 的 OpenID Connect 配置【英文标题】:OpenID Connect Configuration for Facebook 【发布时间】:2014-08-15 15:09:38 【问题描述】:

Google 在https://accounts.google.com/.well-known/openid-configuration 实现了OpenID Discovery Spec,它允许开发人员和用户找到 OpenID 身份验证所需的 URL 和密钥。

我想知道 Facebook 和可能的其他(例如 Microsoft Live)等价物是什么,以便我可以以标准方式使用 Facebook 和其他。

SalesForce 也有一个发现 URL https://login.salesforce.com/.well-known/openid-configuration

【问题讨论】:

+1,这种信息在facebook's docs很难找到。 【参考方案1】:

这是 Facebook 的 OpenID 配置

https://www.facebook.com/.well-known/openid-configuration/

【讨论】:

赞成,因为原始答案已过时,而且 Facebook 已转向 OpenID 标准。 令人讨厌的是,它并没有非常严格地遵守 OpenID 标准。例如,“response_mode”无效。祝你好运,使用隐式流以外的任何东西。 这里没有令牌端点,所以看起来 Facebook 不支持 OpenID Connect(至少不完全支持) 查看 Facebook 的文档,端点是他们所谓的“limited login”,似乎有一些限制。【参考方案2】:

Facebook 的登录机制/协议不是基于 OpenID Connect。 Facebook 使用 OAuth 2.0 的专有扩展,但它不是 OpenID Connect 指定的标准化扩展。因此,与遵守标准的 Google 和 Salesforce 不同,期望 Facebook 发布 OpenID Connect Discovery 文档是没有意义的。

【讨论】:

twitter 也是这样吗? 是的,对于 GitHub。不知道为什么他们没有实现如此简单但有用的 API【参考方案3】:

这是 Microsoft Azure AD 的 OpenID Connect 发现 URL:https://login.windows.net/common/.well-known/openid-configuration

More information here.

【讨论】:

发行人有一个占位符“tennantid”有点奇怪 嗯,他们需要 response_mode,根据规范,它是可选的,很有趣。但让我看看那个价值是什么。 response_mode 条目不需要客户端上的任何内容;它只是说服务器支持所有可能的响应模式 来自信息response_mode [必填] 表示响应的编码。支持的值为 fragment(URL 片段)和 form_post(HTTP 表单 POST)。 对不起,我误解了:我以为您指的是 Discovery 文档中的(也是可选的)条目;似乎确实必须由与 MS Provider 交谈的客户提供此选项

以上是关于Facebook 的 OpenID Connect 配置的主要内容,如果未能解决你的问题,请参考以下文章

是否有适用于所有内容的通用OpenId Connect客户端库?

更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?

使用 OpenID Connect Gluu 身份验证提供程序来保护 Spring Boot Web App 客户端

OpenID Connect webfinger 端点是用户帐户到 OpenID Connect 提供者的映射吗?

Facebook + OpenId 连接

Keycloak, openId-connect userInfo