Java 来自ADFS的SAMLR响应中的UserPrincipalName(UPN)
我正在使用ADFS实现SP启动的SSO。我向ADFS提交SAMLRequest,在验证SAMLRequest之后,ADFS用SAMLResponse响应。 在ADFS中,索赔规则将UPN映射到名称ID。但我无法在SAMLResponse中看到名称ID或UPN。这是我必须在SAMLRequest中告诉ADFS的事情,还是ADFS的一些配置问题 这是我的同样要求:Java 来自ADFS的SAMLR响应中的UserPrincipalName(UPN),java,active-directory,saml-2.0,adfs,adfs2.0,Java,Active Directory,Saml 2.0,Adfs,Adfs2.0,我正在使用ADFS实现SP启动的SSO。我向ADFS提交SAMLRequest,在验证SAMLRequest之后,ADFS用SAMLResponse响应。 在ADFS中,索赔规则将UPN映射到名称ID。但我无法在SAMLResponse中看到名称ID或UPN。这是我必须在SAMLRequest中告诉ADFS的事情,还是ADFS的一些配置问题 这是我的同样要求: <?xml version="1.0" encoding="UTF-8"?> <samlp:AuthnRequest
<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL="https://http://testurl.com/mysite/samlrequest"
ForceAuthn="false" ID="_bec424fa5103428909a30ff1e31168327f79474984"
IsPassive="false" IssueInstant="2015-04-22T11:49:03.815Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Version="2.0">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://testurl.com/mysite</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" />
<samlp:RequestedAuthnContext Comparison="exact">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
我不知道您的索赔规则是什么样子的,但我将电子邮件地址属性映射到nameidentifier,它就可以工作了。这应该是ADFS中的自定义规则,应该如下所示: c:[类型==] =>issueType=,Issuer=c.Issuer,OriginalIssuer=c.OriginalIssuer,Value=c.Value,ValueType=c.ValueType,属性[]=urn:oasis:names:tc:SAML:2.0:nameid格式:瞬态,属性[]=SP\U实体\U ID; 如果要将此作为属性发送,只需使用“将LDAP属性作为声明发送”创建规则
我知道已经晚了,但希望这能帮助到别人。它是否出现在断言的部分而不是部分?您是否使用了转换规则?@explunite我收到的SAMLResponse根本不包含或元素。我是否需要在SAMLRequest中提及获取UPN或名称ID作为响应,如果是,那怎么办呢?我现在还添加了问题中的SAMLRequest。