创建 OpenID Connect 服务器

Creating an OpenID Connect server

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

我认为使用现有的经过良好测试的库比我自己实现整个堆栈更好,所以我打算使用 MITREID Connect。有什么意见吗?

但是,还有一些事情我不确定:

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

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

I have built an authentication system and would like to make it a federated authentication and authorization system (SSO), like Google+ or Facebook. Upon researching, I discovered that OpenID Connect on top of OAuth 2.0 is the best bet.

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

I think it would be better to use an existing well tested library than to implement the entire stack on my own, so I plan to use MITREID Connect. Any comments?

我就是这样做的,使用经过良好测试的库。我用了IdentityServer 3。我不知道 MITREID。

If so and I finish extending my system using OpenID Connect, how do I get web application developers to display my login system on their OpenID Connect/OAuth2 forms? To be clearer, what data do I need to provide or what APIs do I need to expose for clients to begin using my system for authentication and authorization?

你,但如果你实施了一个经过良好测试的库,有人为你完成了,则必须实施 OpenID Connect 规范定义的端点。它们是:

  • 授权/身份验证端点:客户端启动身份验证流程的端点 - 根据 this

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

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

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

有关详细信息,请查看 IdentityServer documentation。它也适用于 OpenID 基础知识(端点部分)。