对OAuth断言流使用SSO断言(JWT或SAML)是否常见?
我正在开发一组系统,这些系统公开了使用OAuth 2进行身份验证的REST API。这些系统中的各种系统都有自己的用户帐户集,所有系统中都没有用户标识符的通用概念 对于交互式使用,我们已经有了一个SAML单点登录解决方案,因此用户可以登录一次身份提供商(它知道他们在所有系统中的用户帐户),然后使用SAML自动登录到每个系统 我想将此模式扩展到我们的OAuth 2认证API。即,允许用户使用其身份提供商凭据进行一次身份验证,然后能够针对每个系统触发OAuth 2身份验证流以获得承载令牌,而无需用户输入每组凭据 我发现了两个草案规范,可以让我实现这一点:对OAuth断言流使用SSO断言(JWT或SAML)是否常见?,oauth,oauth-2.0,single-sign-on,saml,jwt,Oauth,Oauth 2.0,Single Sign On,Saml,Jwt,我正在开发一组系统,这些系统公开了使用OAuth 2进行身份验证的REST API。这些系统中的各种系统都有自己的用户帐户集,所有系统中都没有用户标识符的通用概念 对于交互式使用,我们已经有了一个SAML单点登录解决方案,因此用户可以登录一次身份提供商(它知道他们在所有系统中的用户帐户),然后使用SAML自动登录到每个系统 我想将此模式扩展到我们的OAuth 2认证API。即,允许用户使用其身份提供商凭据进行一次身份验证,然后能够针对每个系统触发OAuth 2身份验证流以获得承载令牌,而无需用户
- 这将允许我使用SAML请求启动OAuth身份验证流
- 这将允许我使用JWT而不是SAML做同样的事情
- 这些类型的SSO模式与OAuth 2常见吗?
- 解决同一问题是否有常用的替代方案?
access\u token
(例如SAP、AWS是两个很好的例子)
所有这些都遵循一个模型,在该模型中,它们是用于调用其API的安全构件的发布者。换言之:
access\u令牌
李>
其他应用程序使用的另一种方法是对API执行与对网站相同的操作:使用可由受信任实体以标准方式生成的工件。JWT是一个很好的候选人。后者由Azure移动服务公司Firebase Layer.com使用
在我们的实现中,默认情况下我们选择了后一种模型,但也为前一种模型中的所有系统实现了一个抽象,并简化了用户代码。我们称之为“身份委派”端点,其签名如下所示。
api\u type
参数定义您要将令牌交换为哪种类型的系统(SAP、Salesforce、Layer等)。让我从您描述的问题的观察开始。从本质上看,跨多个OAuth授权服务器的联合并没有真正作为商品解决。换句话说,每组受保护的资源都有自己的OA,您需要它们来请求令牌。我遇到了这个问题和业务需求
我假设发出身份断言的IdP(例如SAML、WS-Federation)与承载OAuth安全API的资源服务器不同。我使用的一种技术是返回到发出标识的服务器,利用STS将标识交换为SAML承载令牌,并将SAML承载令牌提供给已集成到您尝试访问的资源的OAuth授权服务器(OAS),然后OAuth授权服务器为其安全API发出访问令牌。当然,这仅在发出初始断言的IdP还提供STS以获取SAML承载令牌的情况下有效。您在上面记录的JWT概要文件是业界思想领袖解决跨多个OAuth授权服务器的联合问题的地方。我还没有看到它在整个行业中集成得太多。你看过OpenID Connect吗?@RobbyCornelissen我看过OpenID Connect,据我所知,它解决了一个微妙的不同问题(尽管我可能读错了)。Open ID connect似乎以共享单个用户身份的系统之间的公共身份验证为目标,就像Open ID一样。我正在寻找一个跨安全域的SSO,身份提供者可以在不同的安全域中声明一个独立的用户身份。谢谢,处于我可以接受的最前沿。我想避免的是支持一匹更广泛的社区已经不再支持的马。根据这些回答,似乎SAML&JWT赠款类型是思考的所在,也是解决问题的人所使用的。但尚未被广泛使用。您的
身份委派终结点
:似乎已损坏