我应该如何将SAML登录与REST API SPA应用一起使用



我想将SAML登录用于带有REST API的单个Web应用程序。我应该怎么做?通常,用Oauth说,让我们以Google/Firebase为例:

  • SPA致电Google登录。Google返回Google ID令牌
  • spa可以使用Google ID令牌调用服务器,哪些服务器可以使用Google验证并返回访问令牌,以供应用程序

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


但是,从我看到的SAML中,它的用户被重定向到SAML IDP,SAML IDP然后将用户重定向到服务器主张URL。因为有这种重定向,我该如何在休息的背景下使用它?我不熟悉saml,但我看不到一个令牌。服务器只是获得了用户信息的"断言"?

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

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

这是一个基本情况。

请参阅此处的Spirng-Saml项目,您可以尝试使用示例Web应用程序进行播放。https://projects.spring.io/spring-security-saml

saml断言是Google使用的OpenID Connect 1.0中的ID_Token。SAML中没有Access_Token。SAML是一种身份验证协议。

使用Access_Tokens的OAuth 2.0是授权协议。这就是为什么它提供了访问权限以授权访问您的REST API的原因。

OpenID Connect是OAuth 2.0的扩展名,除API授权外支持用户身份验证并介绍包含用户信息的ID_TOKENS。

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

  1. 从SAML身份提供者那里获得主张。
  2. 在服务器端验证它(格式,签名,寿命等(。
  3. 返回会话cookie在响应中以将其设置在浏览器中。
  4. 对REST API的每个请求都将带有一个会话cookie授权访问它的cookie。

最新更新