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