创建 OpenID Connect 服务器

Kar*_*nan 5 java federated-identity openid-provider single-sign-on openid-connect

我已经构建了一个身份验证系统,并希望将其设为联合身份验证和授权系统 (SSO),例如 Google+ 或 Facebook。经过研究,我发现 OAuth 2.0 之上的 OpenID Connect 是最好的选择。

我认为使用现有的经过良好测试的库比自己实现整个堆栈更好,因此我计划使用MITREID Connect。任何意见?

然而,还有一些事情我不确定:

  1. 我走在正确的轨道上吗?openid-connect-server 的代码库可以用于我想要构建的内容吗?
  2. 如果是这样,并且我使用 OpenID Connect 完成了系统扩展,我如何让 Web 应用程序开发人员在他们的 OpenID Connect/OAuth2 表单上显示我的登录系统?更清楚地说,我需要提供哪些数据或需要公开哪些 API 才能让客户端开始使用我的系统进行身份验证和授权?

如果我遗漏了任何关键点,请告诉我。如果我在错误的论坛上发帖,请随时将帖子移至适当的论坛。

Mar*_*ine 7

我已经构建了一个身份验证系统,并希望将其设为联合身份验证和授权系统 (SSO),例如 Google+ 或 Facebook。经过研究,我发现 OAuth 2.0 之上的 OpenID Connect 是最好的选择。

恕我直言,你绝对是对的!

我认为使用现有的经过良好测试的库比自己实现整个堆栈更好,因此我计划使用 MITREID Connect。任何意见?

我就是使用经过良好测试的库。我使用IdentityServer 3。我不认识米特里德。

如果是这样,并且我使用 OpenID Connect 完成了系统扩展,我如何让 Web 应用程序开发人员在他们的 OpenID Connect/OAuth2 表单上显示我的登录系统?更清楚地说,我需要提供哪些数据或需要公开哪些 API 才能让客户端开始使用我的系统进行身份验证和授权?

但如果您实现了一个经过良好测试的库,有人为您实现了这一点,则必须实现 OpenID Connect 规范定义的端点。那些是:

  • 授权/身份验证端点:客户端通过其启动身份验证和身份验证流程 - 根据

  • 令牌端点:客户端请求/刷新令牌的端点 - 根据

  • UserInfo 端点:客户端通过该端点获得其令牌由客户端拥有的令牌的范围 - 根据

  • 发现端点:如果您愿意,只需让客户端自动找到所有公开的端点 - 按照

有关更多详细信息,请查看IdentityServer 文档。它对于 OpenID 基础知识也有好处(端点部分)。