我应该如何在REST API + SPA应用程序中使用SAML登录?

问题描述 投票:0回答:2

我想对使用REST API的单个Web应用程序使用SAML登录。我该怎么做?通常,以OAuth为例,我们以Google / Firebase为例:

  • SPA要求Google登录。 Google会返回Google ID令牌
  • SPA可以使用Google ID令牌调用服务器,服务器可以通过该服务器验证该服务器并返回用于该应用程序的访问令牌

首先是正确的还是我到目前为止遇到了什么问题?


但是使用SAML,从我所看到的,其用户被重定向到SAML IDP,然后SAML IDP将用户重定向到服务器断言URL。因为有这种重定向,我如何在REST的上下文中使用它?我不熟悉SAML,但我没有看到令牌。服务器只是获得用户信息的“断言”?

rest saml
2个回答
0
投票

以下是应用程序使用SAML进行身份验证时发生的事件序列:

1)服务器应使用SAML IDP的URL向客户端发送响应。 2)客户端应用程序将浏览器重定向到SAML IDP(1)。 3)成功验证后,SAML服务器将带有重定向的响应发送回客户端。浏览器会自动将HTML表单SAML服务器发布到您的服务器。 4)在验证SAML断言和成功授权(您可以使用用户信息或其他属性授权用户使用您的应用程序)之后,您的服务器应生成一个现在可供客户端应用程序使用的令牌。

这是一个基本场景。

在这里查看spring-saml项目,您可以尝试使用示例Web应用程序。 qazxsw poi


0
投票

SAML断言相当于Google使用的OpenID Connect 1.0中的id_token。 SAML中没有access_token。 SAML是一种身份验证协议。

使用access_tokens的OAuth 2.0是一种授权协议。这就是它提供access_token来授权访问REST API的原因。

OpenID Connect是OAuth 2.0的扩展,除了API授权外,还支持用户身份验证,并引入了包含用户信息的id_tokens。

在使用REST API的单页应用程序中使用SAML的一个选项是将它们托管在同一个域中。在这种情况下,您可以:

  1. 从SAML身份提供商处获取断言。
  2. 在服务器端验证它(格式,签名,生命周期等)。
  3. 在响应中返回会话cookie以在浏览器中设置它。
  4. 每个REST API请求都会附带一个会话cookie,授权访问它。
© www.soinside.com 2019 - 2024. All rights reserved.