如何在 Spring 中使用 SAML 从其他经过身份验证的 Rest 调用 Rest
How to call a Rest from other Authenticated Rest with SAML in Spring
到目前为止我所做的是:
我从 here 下载了 Spring boot saml 示例,它工作正常。我在源代码中添加了两个 REST 服务(服务 A 和服务 B),它们也可以与 SAML SSO 一起正常工作。当用户访问 SP 上的受保护资源(Service A 或 Service B)时,他将被转发到 IDP 上的受保护资源。因此,由于用户尚未登录,他们将被重定向到登录页面。登录后,回放原始请求并完成 authNRequest/Response 并将用户重定向到原始安全资源(服务 A 或 B)。
我所做的是:
我运行源同时在两个不同的端口(8080和9000,两个不同的Tomcats)和服务A在8080端口(Tomcat-1 ) 在端口 9000 (Tomcat-2) 中调用服务 B。它正在将请求重定向到 IdP 选择。
我想做的是:
当8080端口(Tomcat-1)的服务A调用9000端口(Tomcat-2)的服务B时,我想检查用户是否已经在IdP(在服务B,端口 9000)或不,然后如果他通过了身份验证,就让他走。
在服务 B(端口 9000)中,如何检查调用是否是由经过身份验证的?
这恐怕无法通过标准的 SAML 方式实现。 SAML 并非旨在保护 services/APIs,而是为了在不使用 cookie 的情况下实现 Web 单点登录。我也怀疑在这种情况下可以使用 ECP 配置文件,并且 ECP 配置文件没有得到广泛实施。
但是,https://www.rfc-editor.org/rfc/rfc7522 允许从 SAML 断言中检索 OAuth2 授权代码。
到目前为止我所做的是:
我从 here 下载了 Spring boot saml 示例,它工作正常。我在源代码中添加了两个 REST 服务(服务 A 和服务 B),它们也可以与 SAML SSO 一起正常工作。当用户访问 SP 上的受保护资源(Service A 或 Service B)时,他将被转发到 IDP 上的受保护资源。因此,由于用户尚未登录,他们将被重定向到登录页面。登录后,回放原始请求并完成 authNRequest/Response 并将用户重定向到原始安全资源(服务 A 或 B)。
我所做的是:
我运行源同时在两个不同的端口(8080和9000,两个不同的Tomcats)和服务A在8080端口(Tomcat-1 ) 在端口 9000 (Tomcat-2) 中调用服务 B。它正在将请求重定向到 IdP 选择。
我想做的是:
当8080端口(Tomcat-1)的服务A调用9000端口(Tomcat-2)的服务B时,我想检查用户是否已经在IdP(在服务B,端口 9000)或不,然后如果他通过了身份验证,就让他走。
在服务 B(端口 9000)中,如何检查调用是否是由经过身份验证的?
这恐怕无法通过标准的 SAML 方式实现。 SAML 并非旨在保护 services/APIs,而是为了在不使用 cookie 的情况下实现 Web 单点登录。我也怀疑在这种情况下可以使用 ECP 配置文件,并且 ECP 配置文件没有得到广泛实施。 但是,https://www.rfc-editor.org/rfc/rfc7522 允许从 SAML 断言中检索 OAuth2 授权代码。