authentication - 新站点有望支持哪些知名 OpenID 提供商?

标签 authentication oauth-2.0 openid-connect

我计划开发一个支持 OpenID Connect 作为依赖方的 Web 应用程序,以便应用程序的用户可以使用他选择的身份提供者进行注册和登录。 (这与每个 Stack Exchange 站点上的“我的登录”使用的技术相同。)该应用程序可供服务器运营商下载和安装,就像 WordPress、phpBB 和 MediaWiki 软件可用一样。服务器运营商应该手动注册哪些 OpenID Connect 提供商?

当 OpenID 2.0 是最常见的协议(protocol)版本时,大多数身份提供者 (IDP) 允许任何依赖方 (RP) 使用他们的身份服务。只有少数 IDP 运营着 RP 白名单;我遇到的是 PayPal Access(现在称为 Log In with PayPal)。关闭访问是有商业原因的,但关闭政策需要国内流离失所者付出额外的努力,所以大多数人都没有打扰。

2015 年 4 月,Google 放弃了 OpenID 2.0,转而使用 OpenID Connect,其中每个 RP 都是一个 OAuth 2.0 客户端应用程序,具有自己的客户端 ID 和由提供商发布的客户端密码。通常,OAuth 要求每个客户端在带外向每个提供者注册,当每个提供者使用唯一的 API 公开 protected 资源时,这很好。但是 OpenID Connect 是一个通用的身份验证 API,当用户在 RP 的登录页面中输入相应的 OpenID 标识符 URI 时,所有 IDP 都应该以相同的方式公开它。所以OpenID Connect spec描述了一个可选的动态客户端注册 (dyn-reg) 功能,它允许 RP 自动注册为 OAuth 客户端,如 Hans Z.'s answer to "Can you use OpenID Connect without obtaining OAuth credentials?" 中所述.但是,每个 IDP 都必须努力实现 dyn-reg。 Google 和 PayPal 是选择不这样做的 OpenID Connect IDP 的例子。即使提供者确实实现了 dyn-reg,规范仍然允许 IDP 要求 RP 首先提供由提供者发布的有效初始访问 token 。因此,如果有 n 个 RP 和 m 个公共(public) IDP,则人类必须阅读并接受 n*m 次契约(Contract)。

换句话说,OpenID 2.0 中的默认是开放的; OpenID Connect 中的默认设置是关闭的。

因此,随着越来越多的 OpenID 提供商效仿 Google 并放弃 OpenID 2.0 转而支持 OpenID Connect,如果我采用 RP,我希望粘贴标识符 URI 的最终用户会被拒绝并显示错误消息,大意是“The provider of the Example.com 不知道此标识符,并且不支持动态客户端注册。”然后,运行我的 Web 应用程序的服务器的运算符(operator)必须阅读此类错误的日志并手动注册每个此类 IDP 以获取客户端凭据。而且我必须在这个 Web 应用程序中构建配置变量,让服务器运算符(operator)提前为每个流行的提供商指定客户端凭据,这样网站的用户就会被转换而不是失望。

我想让下载了我的应用程序的服务器运算符(operator)可以轻松地将其安装在其域中的 Web 服务器上并作为 RP 上线。因此,我希望它的设置过程能够建议服务器运营商可能会遇到此问题的公共(public) IDP,而不是让管理员自行处理的空白“添加 OpenID 连接提供程序”表单。

其他相关问题(OpenID Connect providersList of OpenID Connect providers)的列表太短、过时,没有将需要手动注册的 IDP 分开,也没有将流行的 IDP 与小众的 IDP 分开。例如,Salesforce.com 是一个利基 IDP,allows only its own customers to be RPs ,而且我认为最终用户不会期望能够在公共(public) Web 应用程序上输入来自利基 IDP 的标识符。
我想知道我可以从哪些来源收集有关广泛使用的 IDP 的信息并保持最新状态。

那么,在网站上线之前,我将如何寻找不支持开放式动态客户端注册的知名通用 OpenID Connect 提供商呢?

最佳答案

  • 检查 OpenID 连接提供商的最佳位置是:http://openid.net/developers/libraries/最新的认证供应商名单在这里:http://openid.net/certification/

  • 2. 如果我理解正确,OpenID Connect 完全支持您的用例。

    3. 我建议你看一下 IdentityServer3: https://github.com/IdentityServer/IdentityServer3 ,因为我相信它会满足您的要求。我个人使用它,它的开源项目由安全领域的专家维护和开发。

    更新:

    我不确定您是否真的需要动态客户端注册,在 OIDC 中,您的整个应用程序被视为单个客户端/RP。大多数 OIDC 提供商完全支持您的应用程序客户端/用户(以及每个应用程序客户端的一组用户),而无需动态客户端注册。如果您的应用程序是动态门户的保护伞,您将需要 DCR。

    关于authentication - 新站点有望支持哪些知名 OpenID 提供商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385666/

    相关文章:

    php - Laravel 5.4 - 在哪里更改登录 ID

    php - $_POST 未定义索引

    c# - OneDrive oauth wpf 禁用自动登录浏览器

    asp.net - 使用 IdentityServer4 进行无限循环重定向

    ruby - "uninitialized constant OpenSSL::PKey::EC"来自 CentOS 6.6 上的 Ruby

    python - 我如何在 Django 中编写装饰器来检查两个单独的条件并相应地重定向?

    c# - 使用 React 和 dotnet 核心 Web API 的 Google 身份验证

    javascript - 需要 Auth0 RememberLastLogin 参数信息来获取普通链接选项

    node.js - Node.js 中的 2 条腿服务器端 oauth 实现

    ruby-on-rails - Open ID Connect 提供商 - 保留 ID token ?