Spring Boot 使用Keycloak作为Identity Broker和我的Sping Boot 应用程序作为SAML SSO的Identity Provider的配置

gijlo24d  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(145)

我正在尝试使用SAML SSO登录到第三方应用程序(本例中为Sentry)。在这里,我们选择Keycloak作为身份代理,我自己的应用程序(react中的前端和spring Boot 中的后端)作为身份提供者,它将包含用户并保持真实性的来源。
首先,下面是我创建的配置:
1.在Keycloak中创建了一个身份提供程序(XYZ),并提供了我的应用程序登录页面的SSO URL。
1.在Keycloak中为Sentry创建了一个客户端,细节很少。

  1. Sentry中的配置和从keycloak领域IDP元数据SAML 2.0数据导入的IDP元数据。
    1.已将XYZ身份提供者设置为Keycloak中的默认提供者。
    流:SP启动得流
    1.登陆Sentry,显示使用SAML登录。
    1.当我启动时,Sentry向keycloak发送SAML身份验证请求,它将我重定向到我的应用程序(XYZ)的登录页面。
    1.我提供凭据,对用户进行身份验证,并在我的应用程序XYZ中生成SAML响应。
    1.我重定向浏览器,然后从XYZ应用程序到Keycloak使用重定向URI,我从身份提供者,我配置。但是我得到了无效的saml响应的异常。
    关于我描述的上述流程,我有几个问题,如果弄清楚了,可以帮助我完成这个流程,并创造我的理解周围相同。
    1.在Sentry生成SAML身份验证请求后,Keycloak将SAML身份验证请求按原样重定向到我的XYZ应用程序。这是正确的行为吗?
    1.如果我理解正确的话,我需要验证这个SAML authn请求并生成SAML响应。此SAML响应应针对Keycloak还是Sentry?我的意思是,既然Keycloak是一个代理,它不会解析我的SAML响应并为Sentry生成一个新的SAML响应吗?我是对的还是漏掉了什么。
    1.如果Keycloak要解析和验证我的SAML响应,那么我的响应的确切结构应该是什么?我是否需要按照某种标准创建SAML响应,以便Keycloak可以验证它?
  2. SAML响应不应该是对Sentry启动的SAML身份验证请求的响应吗?
  3. RelayState的值应该是多少?
  4. IDP配置是否也需要有与Sentry相关的数据?
    所有这些棘手的问题都让我很坚韧。
wwtsj6pe

wwtsj6pe1#

我能够理解流程并实现SSO的完整流程。一件事是我们需要接受RelayState与服务提供者SSO请求一起发送。这里我忽略了这一点,通过添加这个并将有效的saml响应发送回Keycloak,keycloak验证我的saml响应,如果我创建了Map器,则Map这些属性并将响应发送回服务提供商。我需要为属性Map器和第一个代理登录的身份验证流进行一些额外的配置。我可以直接重定向到哨兵的帖子

相关问题