当前位置: 首页 > 知识库问答 >
问题:

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

卞轶
2023-03-14

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

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

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

我找到了2个草案规格,可以让我实现这一点:

  • 用于OAuth 2.0客户端身份验证和授权授予的SAML 2.0配置文件,这将允许我使用SAML请求启动OAuth身份验证流
  • 用于OAuth 2.0客户端身份验证和授权授权的JSON网络令牌(JWT)配置文件,这将允许我使用JWT而不是SAML做同样的事情

但这些都是草稿,在投入过多资金之前,我想了解这些模式的使用是否相对广泛,或者我是否支持edge case技术。

因此,我的问题是:

  • 这些类型的SSO模式与OAuth 2通用吗

这些草稿似乎是由Salesforce编写的。com,并由他们使用:SAML,JWT。

我还看到了一些关于它们在Salesforce中的使用的问题。这表明它们至少被实际使用过。

我还看到一个未回答的问题,询问Windows Azure是否支持此流,这表明其他人至少正在寻找相同的问题。

google似乎使用JWT变体来实现服务器到服务器的应用程序,并在此处使用“服务帐户”详细信息

共有2个答案

堵乐
2023-03-14

让我从你描述的问题的观察开始。从本质上看,跨多个OAuth授权服务器的联合并没有真正作为商品解决。换句话说,每组受保护的资源都有自己的OA,您需要它们来请求令牌。我遇到了这个问题和业务需求。

我假设发出身份断言的IdP(例如SAML、WS-Federation)与承载OAuth安全API的资源服务器不同。我使用的一种技术是返回到发出标识的服务器,利用STS将标识交换为SAML承载令牌,并将SAML承载令牌提供给已集成到您尝试访问的资源的OAuth授权服务器(OAS),然后OAuth授权服务器为其安全API发出访问令牌。当然,这仅在发出初始断言的IdP还提供STS以获取SAML承载令牌的情况下有效。您在上面记录的JWT概要文件是业界思想领袖解决跨多个OAuth授权服务器的联合问题的地方。我还没有看到它在整个行业中有多少整合。

端木鹏
2023-03-14

我们广泛使用Salesforceendpoint进行令牌交换,并完全按照您的意图进行操作。其他系统的实现在概念上相似,但略有不同,返回不同形式的access\u token(例如SAP、AWS是两个很好的例子)。

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

  1. 用户验证(到一个网站)。
  2. 有代表身份验证的东西(例如SAML令牌)
  3. 调用特定的API将用户构件交换为APIaccess_token

其他应用程序使用的另一种方法是对API执行与对网站相同的操作:使用可由受信任实体以标准方式生成的工件。JWT是一个很好的候选人。后者由Azure移动服务、Firebase和Layer使用。通用域名格式。

在我们的实现中,我们默认选择了后一种模型,但也为前一种中的所有系统实现了抽象,并简化了用户代码。我们称之为“身份委托”终结点,它的签名看起来像这样。api_type参数定义了您将为哪种系统(SAP、Salesforce、Layer等)交换令牌。)。

 类似资料:
  • 我正在使用多个SP实现单点登录。以下是我的基本理解: 1) 浏览器(用户)向服务提供商(SP)请求资源 2)SP重定向(使用SAML请求)到身份提供程序(IdP) 3)由于这是第一次登录,用户将向(IdP)提供其有效凭据 4)然后,IdP将浏览器(带有包含SAML令牌的SAML响应)重定向到SP页面。 现在,假设我有服务提供商A和服务提供商B。一个用户已经完成了关于服务提供商A的步骤。从服务提供商

  • 作为服务提供商,我试图通过从身份提供商(IdP)获取SAML断言(SAML 1.0)来验证我页面上的用户。执行以下步骤(非常抽象): 用户访问我的页面 我将用户重定向到用户进行身份验证的IdP。 我得到了一个SAML工件,通过它我向IdP请求SAML断言。 IdP将SAML断言直接发送回我的页面。 ? 此过程是否足以确保用户身份验证是合法的?我是否只是在步骤 5 中授予用户对我服务的访问权限,还是

  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件

  • 我有一个Java Web应用程序,我想将其作为服务提供商并实现SAML。我不确定如何做这件事的工作流程。 我已经阅读了这个SO问题,但仍然无法完全理解。在问题中,他们说他们需要向IDP发送请求,如果我是对的,称为断言。 如何创建断言?我在那里看到了样品。但是在哪里传递登录凭据呢? 另外,我如何在IDP注册我的应用程序,我是否需要安装IDP为此提供的一些证书?工作流程是什么? 谢谢

  • 我有一个webservice操作,其中我将获得SAML断言作为请求体的一部分。我跟踪XSD: saml:断言是指:< br>

  • 我试图从开发人员的角度理解IdP发起的SSO的基本流程。我还试图从随。NET集成工具包。 基于此链接:http://documentation.pingidentity.com/display/PF610/OpenToken 适配器配置 问:PingFederate 服务器如何解析 SAML 断言?我是否必须从 SP 服务器对其进行编码?还是PingFederate服务器的设置会进行解析? 我现在