我想对使用REST API的单个Web应用程序使用SAML登录。我该怎么做?通常,以OAuth为例,我们以Google / Firebase为例:
首先是正确的还是我到目前为止遇到了什么问题?
但是使用SAML,从我所看到的,其用户被重定向到SAML IDP,然后SAML IDP将用户重定向到服务器断言URL。因为有这种重定向,我如何在REST的上下文中使用它?我不熟悉SAML,但我没有看到令牌。服务器只是获得用户信息的“断言”?
以下是应用程序使用SAML进行身份验证时发生的事件序列:
1)服务器应使用SAML IDP的URL向客户端发送响应。 2)客户端应用程序将浏览器重定向到SAML IDP(1)。 3)成功验证后,SAML服务器将带有重定向的响应发送回客户端。浏览器会自动将HTML表单SAML服务器发布到您的服务器。 4)在验证SAML断言和成功授权(您可以使用用户信息或其他属性授权用户使用您的应用程序)之后,您的服务器应生成一个现在可供客户端应用程序使用的令牌。
这是一个基本场景。
在这里查看spring-saml项目,您可以尝试使用示例Web应用程序。 qazxsw poi
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的一个选项是将它们托管在同一个域中。在这种情况下,您可以: