我尝试使用“Saml2RedirectAuthenticationRequest”类生成响应重定向,但当我进行重定向时,我得到以下错误:
java.lang.IllegalArgumentException: samlRequest cannot be null or empty
我知道,我必须创建一个samlRequest
对象,但我找不到任何文档说明这种情况。下面是我用来生成请求重定向的示例代码:
Saml2RedirectAuthenticationRequest authnRequest = Saml2RedirectAuthenticationRequest
.withRelyingPartyRegistration(relyingPartyRegsitration)
.relayState(relayState)
.build();
String encodedRequest = URI.create(authnRequest.getAuthenticationRequestUri().toString()).toASCIIString();
response.sendRedirect(encodedRequest);
1条答案
按热度按时间nue99wik1#
出现错误的原因是
Saml2RedirectAuthenticationRequest
要求您在构造samlRequest
时指定已签名和序列化的samlRequest
。Saml2RedirectAuthenticationRequest
是保存身份验证请求的域对象,而不是创建、签名和序列化身份验证请求的对象。创建、签名和序列化的组件是
Saml2AuthenticationRequestResolver
。当给定一个HttpServletRequest
时,它返回一个Saml2RedirectAuthenticationRequest
。您可以在Spring Security's documentation中阅读有关此内容的更多信息。我建议使用Spring Security的filter chain来为您创建和发送
AuthnRequest
,而不是直接制定它。当您在HttpSecurity
设置中使用saml2Login
DSL方法时,或者当您配置Sping Boot for SAML时,当您重定向到/saml2/authenticate/{registrationId}
时,这一切都会为您完成。您可以看到Spring Security's Boot sample已经完全配置了SAML 2.0 Login和Logout。