java - 实现 SAML SSO 时出现以下错误的原因是什么

标签 java single-sign-on saml spring-saml

您能否指出我可能出错的正确方向:

示例消息:

<?xml version="1.0" encoding="UTF-8"?>
 <saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="https://source.com/saml/SSO/alias/umhbdev.fideliseducation.com"
    Destination="https://destination.com/trust/saml2/http-post/sso/519153" ForceAuthn="false" 
    ID="a2cg4958cgi94aji2iac7h1j6a3j0jj" 
    IsPassive="false" 
    IssueInstant="2016-04-11T15:42:47.681Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">source.com
</saml2:Issuer>
</saml2p:AuthnRequest>;

错误

   INFO [11 Apr 2016 15:42:50,495] [http-nio-80-exec-1](SAMLProtocolMessageXMLSignatureSecurityPolicyRule.java:100)
    - SAML protocol message was not signed, skipping XML signature processing

    ERROR [11 Apr 2016 15:42:50,495] [http-nio-80-exec-1](ExceptionFilter.java:58) - Error occurred

    java.lang.IllegalArgumentException: Given URL is not well formed

    at org.opensaml.util.URLBuilder.<init>(URLBuilder.java:120)

    at org.opensaml.util.SimpleURLCanonicalizer.canonicalize(SimpleURLCanonicalizer.java:87)

    at org.opensaml.common.binding.decoding.BasicURLComparator.compare(BasicURLComparator.java:57)

    at org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder.compareEndpointURIs(BaseSAMLMessageDecoder.java:173)

    at org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder.checkEndpointURI(BaseSAMLMessageDecoder.java:213)

    at org.opensaml.saml2.binding.decoding.BaseSAML2MessageDecoder.decode(BaseSAML2MessageDecoder.java:72)

    at org.springframework.security.saml.processor.SAMLProcessorImpl.retrieveMessage(SAMLProcessorImpl.java:105)

    at org.springframework.security.saml.processor.SAMLProcessorImpl.retrieveMessage(SAMLProcessorImpl.java:172)

    at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:77)

    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:211)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)

    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166)

    Caused by: java.net.MalformedURLException: no protocol: {recipient}

    at java.net.URL.<init>(URL.java:593)

    at java.net.URL.<init>(URL.java:490)

    at java.net.URL.<init>(URL.java:439)

    at org.opensaml.util.URLBuilder.<init>(URLBuilder.java:77)

    ... 61 more

最佳答案

您的 AssertionConsumerServiceURL 应为 AssertionConsumerServiceURL="https://source.com/saml/SSO"

关于java - 实现 SAML SSO 时出现以下错误的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607621/

相关文章:

java - 无法从 ADFS 服务器获取 SAML 响应

php - 如何在基于SimpleSAMLphp的IdP中用属性替换NameId的值?

java - 为什么在java中我们不能通过一个扫描器对象获取用户输入的int和string?

java - spring boot + redis cache + @Cacheable 适用于某些方法而不适用于其他方法

authentication - 以编程方式登录 Microsoft Online

single-sign-on - Keycloak - 限制每个客户端/应用程序的用户访问

java - 以编程方式对不同的类进行分组和类型提示

java - 错误: cannot find symbol [compiler error]

amazon-web-services - 如何在 Keycloak 中创建客户端以与 AWS Cognito Identity Federation 一起使用

php - 使用 SimpleSAML 作为开发环境的 SP 和 IDP