验证SAML邮件时出错

时间:2016-02-18 14:04:43

标签: saml-2.0 spring-saml okta

我正在尝试Okta快速启动Java tomcat SAML,我对这个话题很新 当我启动我的测试应用程序时,我确实看到一个指向Okta IDP的链接,点击“开始单点登录”按钮后,我被重定向到Okta地址,信息“Sining in to SAML - Test”(我的Okta测试名称)之后我再次被重定向到我的应用程序:
Error Error validating SAML message
之后有一个堆栈跟踪与
Caused by: org.opensaml.common.SAMLException: Response doesn't have any valid assertion which would pass subject validation at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:229) at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82) ... 27 more Caused by: org.opensaml.common.SAMLException: Local entity is not the intended audience of the assertion in at least one AudienceRestriction at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAudience(WebSSOProfileConsumerImpl.java:506) at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertionConditions(WebSSOProfileConsumerImpl.java:458) at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertion(WebSSOProfileConsumerImpl.java:303) at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:214) ... 28 more
我错过了什么?我究竟做错了什么?
谢谢你的帮助Zack。

3 个答案:

答案 0 :(得分:4)

Spring SAML服务提供商的实体ID与Okta的SAML响应中的Destination元素不匹配。比较这两个值并修复Spring SAML或Okta端的值。

答案 1 :(得分:0)

在 Azure 容器实例中部署 Spring Boot 应用程序并使用 Okta SAML 时出现同样的问题。 saml.sp=http://fqdn-of-my.domain.com:8082/saml/metadata,由 AWS 托管的 DNS 区域 A 记录解析的 FQDN,URL 本身可访问并下载 spring_saml_metadata.xml。

Caused by: org.opensaml.common.SAMLException: Local entity is not the intended audience of the assertion in at least one AudienceRestriction
        at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAudience(WebSSOProfileConsumerImpl.java:542)
        at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertionConditions(WebSSOProfileConsumerImpl.java:494)
        at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertion(WebSSOProfileConsumerImpl.java:339)
        at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:250)
        ... 53 more

答案 2 :(得分:0)

30 分钟后更新:我注意到在重新构建和重新部署应用程序后错误消失了!!

saml.sp=http://fqdn-of-my.domain.com:8082/saml/metadata 在 Spring application.properties 中,同一 URL 中可用的 SP Metadata 原来是下面的,报错:

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor 
  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
  ID="http___localhost_8082_saml_metadata" 
  entityID="http://localhost:8082/saml/metadata">

使用元数据重建和重新部署应用程序,如下所示,握手成功:

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor 
  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
  ID="http___fqdn-of-my.domain.com_8082_saml_metadata" 
  entityID="http://fqdn-of-my.domain.com:8082/saml/metadata">

我很确定即使在出现错误时我也正确设置了该属性。但无论如何,重建 Dockerized Spring 应用程序并将其重新部署到 Azure 最终解决了这个问题。