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 应用程序进入无限循环

使用 ITfoxtec.Identity.Saml2 登录用户

验证 SAML 消息时出错

操作指南|JumpServer与Okta集成对接

Okta 无法访问 jenkins 服务器