带有 SpringBoot API 和 React 的 Keycloak SSO (SAML)

Keycloak SSO (SAML) with SpringBoot API and React

我正在开发一个具有在 JAVA SpringBoot 中开发的 API 的应用程序。这些是纯 REST API。 前端使用 React 开发。

我应该以这种方式在 React 中添加身份验证 - 它在访问 SpringBoot API 之前使用 Keycloak 作为 IDP 进行用户身份验证。

到目前为止,我已经看到 Keycloak 可以支持 keycloak.js,这是用于 OPEN ID 连接的 JavaScript 适配器。但我想要 SAML 2.0 的解决方案。

有没有办法在 React 应用程序中添加 SAML 2.0 SSO?

还有一个问题:

如果用户使用 OpenID 连接向应用程序 B 进行身份验证,然后尝试访问应用程序 A,用户是否能够无缝访问应用程序 A,或者它会再次要求进行身份验证?

您需要在 Spring 引导后端而不是反应前端处理身份验证(参见:https://spring.io/projects/spring-security-saml)因为 SAML 只是一种身份验证机制,它不像 OpenId 那样提供授权(有没有访问令牌)。

当用户获得授权后,您可以将会话 cookie 返回给您的 React 应用程序,它将提供必要的信息以授权将来对您的后端的 API 请求。

关于你的第二个问题,你可以找到一种方法来使用你用来连接到应用程序 A 的 SAML 断言来检索应用程序 B 的访问令牌。

这种机制有一个规范:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-saml2-bearer-20

请记住,这意味着需要进行大量自定义实施工作,您最好在所有应用中使用 OpenId,以便为您的用户提供 SSO。