尝试为dynamics 2011实现SSO w/ADFS 2.0声明-声明未通过
本文关键字:0声明 声明 ADFS dynamics 2011 实现 SSO | 更新日期: 2023-09-27 18:09:18
我正在尝试为microsoft dynamics 2011实现SSO,如本演练中所述(编写得非常糟糕(
我已经将我的ASP.NET网站配置为ADFS管理器中的依赖方,并按照说明添加了STS引用
我已经为ADFS中的UPN字段定义了一个发布转换规则。
在我的ASP.NET应用程序中,执行此操作时-IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];
我确实得到了Microsoft.IdentityModel.Claims.ClaimsIdentity
的一个实例,但是,它的Claims
集合是空的。
然而,我注意到,"添加sts"向导生成的FederationMetadata.xml
只包含2个<auth:ClaimType>
元素——对于name
和role
,这两个元素都是可选的=true
但是,如果我尝试手动编辑和更新依赖方的FederationMetadata.xml
以将upn
添加为索赔类型,或者使现有索赔类型之一不可选,我会遇到以下错误-ID6018 Digest verification failed...
如果两者都恢复为"optional=true",则不会发生错误。
有人能提供任何关于如何将UPN
字段添加到我的ASP.NET应用程序的见解吗
此外,如果能提供比我提到的更好的操作方法/演练,我们将不胜感激。
我真的不确定这里要提供什么进一步的信息,所以我只发布我的应用程序的FederationMetadata.xml
:
<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor ID="_bad84517-5281-47e8-be9d-2e1a78eae772" entityID="https://MyAspnetSite.com:4455/"
xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_bad84517-5281-47e8-be9d-2e1a78eae772">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>
eWoZYLA/oMNMWd+S9m0TlbIg2rUSuumAckA0BTdAqbg=
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
yMubsY42ZblFDP4ZFEO06uT317c/xdMUF7PrOhPpShkDtbigg1TWq3tGYEa35+xpfjqQCseHJH07ftkxOH6t0u6ngqbGCmZ4yaOBTA3bdbGMGull6WwLSQIxNn2eR1mRzyF2mIM3t4Jfl6EoOZ0msnsyUTVI9Oq03eFweDN2zoI=
</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>
certificate data
</X509Certificate>
</X509Data>
</KeyInfo>
</ds:Signature>
<RoleDescriptor xsi:type="fed:ApplicationServiceType"
protocolSupportEnumeration="http://schemas.xmlsoap.org/ws/2005/02/trust http://docs.oasis-open.org/ws-sx/ws-trust/200512"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fed="http://docs.oasis-open.org/wsfed/federation/200706">
<KeyDescriptor use="encryption">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>
certificate data
</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
<fed:ClaimTypesRequested>
<auth:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="false"
xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
<auth:ClaimType Uri="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="false"
xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
<auth:ClaimType Uri="http://schemas.microsoft.com/ws/2005/05/identity/claims/upn" Optional="false"
xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
</fed:ClaimTypesRequested>
<fed:TargetScopes>
<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
<Address>
https://MyAspnetSite.com:4455/
</Address>
</EndpointReference>
</fed:TargetScopes>
<fed:ApplicationServiceEndpoint>
<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
<Address>
https://MyAspnetSite.com:4455/
</Address>
</EndpointReference>
</fed:ApplicationServiceEndpoint>
</RoleDescriptor>
</EntityDescriptor>
您不能直接修改FederationMetadata文档,因为它是数字签名的。如果你这样做,它将被ADFS拒绝,因为它认为它被篡改了。
无论如何,元数据文档不能控制ADFS中发布的索赔。除了添加RP之外,您还需要在ADFS中创建规则,定义将为此RP发布的索赔。
CRM的另一个文档解释了如何做到这一点。
好吧,为了未来可能遇到这种情况的穷人的利益,我将记录我的问题:
"添加STS引用"向导以错误的方式更改了我的web.config。
我不知道为什么,也许是因为我有一个预先存在的<system.serviceModel>
部分,但向导在<system.serviceModel> ' <bindings> ' <ws2007FederationHttpBinding>
下添加了<claimTypeRequirements>
部分和其他各种东西,它们似乎并没有真正起到任何作用
我最终删除了它,并手动添加了相应的<microsoft.identityModel>
部分
这似乎奏效了。