在我的应用程序中以及从app-1中实现SSO,我需要对app-2进行一次调用。使用SAML登录到app-1,并成功通过身份验证,并尝试使用openid从app-1进行剩余调用,但是由于身份验证仅使用saml,因此无法获取访问/承载令牌。请帮助如何从saml请求/响应中获取访问/承载令牌。我正在使用Keycloak Server进行SSO实施。
答案 0 :(得分:0)
你不能。
REST API需要JWT令牌而不是SAML令牌。
将SAML更改为OpenID Connect,它将起作用。
答案 1 :(得分:0)
(1)OpenID Connect 1.0是基于OAuth 2.0协议的简单身份层。它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,并以可互操作且类似于REST的方式获取有关最终用户的基本配置文件信息。
(2)当前没有有关OpenID Connect客户端的SAML 2.0配置文件的IETF草案文件。
我们可以参考IETF文件SAML 2.0 Profile for OAuth 2.0 client。
使用SAML断言的OAuth 2.0访问令牌可以使OAuth客户端使用SAML断言请求访问令牌。这支持OAuth 2.0 SAML流,当客户端希望利用通过SAML断言的语义表示的现有信任关系时使用该OAuth 2.0 SAML流,而无需授权服务器上的直接用户批准步骤。有关受支持的OAuth流的详细信息,请参见API Gateway OAuth 2.0 authentication flows。
(3)Auth0和开源WSO2 Identity Server都为OpenID Connect / OAuth实施SAML配置文件,以将SAML令牌转换为OpenID Connect / OAuth令牌,如Auth0 SAML Configuration和WSO2 Adding and Configuring an Identity Provider所示。换句话说,Auth0和WSO2 Identity Server可以将SAML IdP提供的SAML身份验证中继到OpenID Connect客户端或OAuth 2.0客户端。