Okta SAML 登录不成功
Posted
技术标签:
【中文标题】Okta SAML 登录不成功【英文标题】:Okta SAML login is not success 【发布时间】:2017-03-05 19:54:20 【问题描述】:使用 Okta 作为 IdP 实施 SAML。当项目在我的本地机器和我们的 QA 机器上运行时,登录工作正常。当我将它移到生产中时,同一个项目不起作用。我用 DNS 名称代替 URL,生产实例是 HTTPS。当我尝试时,它显示关于端点不匹配的错误。我将 IdP 元数据内容复制到项目中的 idp.xml
文件中。使用 Spring Security SAML。我按照以下说明进行操作:http://developer.okta.com/code/java/spring_security_saml.html
这里有什么问题?我错过了什么吗?
更新
错误:-
org.springframework.security.authentication.AuthenticationServiceException: Incoming SAML message is invalid
at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:100)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195)
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)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:87)
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:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
Caused by: org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint
at org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder.checkEndpointURI(BaseSAMLMessageDecoder.java:217)
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:80)
... 30 more
【问题讨论】:
【参考方案1】:检查您的 SP 元数据(您生成的元数据)并确保它引用的端点反映了生产 DNS 设置
【讨论】:
嗨,马丁感谢您的回复,实际上,当我的应用程序是 http 时,我可以登录,但对于 https,它显示错误。我需要进行哪些更改才能使我的应用程序正常运行? 确保 HTTPS 配置正确并使用正确签名的证书。对于您的生产实例,请确保 HTTPS 证书由 certificate authority that is trusted by Java 签名,当从您的 SAML SP 获取 SAML 元数据时,Spring Security SAML 可能会遇到 TLS 错误。 @JoëlFranusic 嗨乔尔,我们使用的是亚马逊服务器,并且配置正确,我们是否需要在 okta 和我的 https 应用程序中进行任何特定更改?你有什么参考吗? 您能否用更详细的错误消息编辑您上面的问题?以上是关于Okta SAML 登录不成功的主要内容,如果未能解决你的问题,请参考以下文章
配置 saml-sample (SP) 以使用 Okta (IdP)
Okta/Spring Boot Saml 应用程序进入无限循环