对OAuth断言流使用SSO断言(JWT或SAML)是否常见?

对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身份验证流以获得承载令牌,而无需用户

我正在开发一组系统,这些系统公开了使用OAuth 2进行身份验证的REST API。这些系统中的各种系统都有自己的用户帐户集,所有系统中都没有用户标识符的通用概念

对于交互式使用,我们已经有了一个SAML单点登录解决方案,因此用户可以登录一次身份提供商(它知道他们在所有系统中的用户帐户),然后使用SAML自动登录到每个系统

我想将此模式扩展到我们的OAuth 2认证API。即,允许用户使用其身份提供商凭据进行一次身份验证,然后能够针对每个系统触发OAuth 2身份验证流以获得承载令牌,而无需用户输入每组凭据

我发现了两个草案规范,可以让我实现这一点:

  • 这将允许我使用SAML请求启动OAuth身份验证流
  • 这将允许我使用JWT而不是SAML做同样的事情
但这些都是草稿,在投入过多资金之前,我想了解这些模式的使用是否相对广泛,或者我是否支持edge case技术

因此,我的问题是:

  • 这些类型的SSO模式与OAuth 2常见吗?
  • 解决同一问题是否有常用的替代方案?
这些草稿似乎是由Salesforce.com编写的,目前正在使用中:

我在这里还看到了一些关于它们在Salesforce.com上的使用的问题,这表明它们至少在实际使用中

我还看到一个未回答的问题,问这是否意味着其他人至少也在寻找同样的问题

谷歌似乎在使用“服务帐户”的服务器到服务器应用程序中使用了JWT变体,将Salesforce端点广泛用于令牌交换,并完全按照您的意图进行操作。其他系统的实现在概念上相似,但略有不同,返回不同形式的
access\u token
(例如SAP、AWS是两个很好的例子)

所有这些都遵循一个模型,在该模型中,它们是用于调用其API的安全构件的发布者。换言之:

  • 用户(对网站)进行身份验证
  • 有一些东西表示该身份验证(例如SAML令牌)
  • 调用特定的API以将用户工件交换为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赠款类型是思考的所在,也是解决问题的人所使用的。但尚未被广泛使用。您的
    身份委派终结点
    :似乎已损坏