【发布时间】:2015-08-03 17:25:06
【问题描述】:
我正在开发一组系统,这些系统公开了使用 OAuth 2 进行身份验证的 REST API。这些系统中的许多系统都有自己独立的用户帐户集,所有系统中没有通用的用户标识符概念.
对于交互式使用,我们已经有一个 SAML 单点登录解决方案,因此用户可以在身份提供者上登录一次(它知道他们在所有系统中的用户帐户),然后使用 SAML 自动登录到每个系统。
我想将此模式扩展到我们的 OAuth 2 认证 API。 IE。允许用户使用其身份提供者凭据进行一次身份验证,然后能够针对每个系统触发 OAuth 2 身份验证流程以获取不记名令牌,而无需用户输入每组凭据。
我找到了 2 个草案规范,可以让我实现这一目标:
- SAML 2.0 Profile for OAuth 2.0 Client Authentication and AuthorizationGrants 这将允许我使用 SAML 请求启动 OAuth 身份验证流程
- JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants 这将允许我使用 JWT 而不是 SAML 做同样的事情
但这些都是草稿,在进行过多投资之前,我想了解这些模式是否得到了相对广泛的使用,或者我是否支持边缘案例技术。
所以我的问题是:
- 这些类型的 SSO 模式在 OAuth 2 中是否常见?
- 是否有解决相同问题的常用替代方法?
这些草稿似乎是由 Salesforce.com 撰写并被他们使用:SAML、JWT。
我还在这里看到了一些关于它们用于 Salesforce.com 的问题,这表明它们至少被实际使用过。
我还看到一个未回答的问题,询问 Windows Azure supports this flow 是否表明其他人至少在寻找相同的问题。
Google 似乎使用 JWT 变体来使用“服务帐户”Details HereDetails Here
【问题讨论】:
-
你研究过 OpenID Connect 吗?
-
@RobbyCornelissen 我看过 Open ID connect,据我了解,它解决了一个微妙不同的问题(尽管我可能读错了)。 Open ID connect 似乎针对共享单个用户身份的系统之间的公共身份验证,就像 Open ID 所做的那样。我正在寻找更多跨安全域的 SSO,其中身份提供者能够在不同的安全域中声明独立的用户身份。
标签: oauth oauth-2.0 single-sign-on saml jwt