C# 尝试为dynamics 2011 w/ADFS 2.0声明实施SSO-声明未通过
我正在尝试为microsoft dynamics 2011实现一个SSO,如本文所述(编写得非常糟糕)。C# 尝试为dynamics 2011 w/ADFS 2.0声明实施SSO-声明未通过,c#,dynamics-crm-2011,wif,adfs2.0,C#,Dynamics Crm 2011,Wif,Adfs2.0,我正在尝试为microsoft dynamics 2011实现一个SSO,如本文所述(编写得非常糟糕)。 我已在ADFS manager中将我的ASP.NET网站配置为依赖方,并按照说明添加STS引用。 我已经为ADFS中的UPN字段定义了一个发布转换规则 在我的ASP.NET应用程序中,执行此操作时- IClaimsIdentity claimsIdentity=((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identifies[0]我确实得到了M
我已在ADFS manager中将我的ASP.NET网站配置为依赖方,并按照说明添加STS引用。
我已经为ADFS中的UPN字段定义了一个发布转换规则 在我的ASP.NET应用程序中,执行此操作时-
IClaimsIdentity claimsIdentity=((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identifies[0]
我确实得到了Microsoft.IdentityModel.Claims.ClaimsEntity的一个实例,但是它的Claims
集合是空的
但是,我注意到,“添加sts”向导生成的FederationMetadata.xml
只包含2个
元素-对于name
和role
,这两个元素都是可选的。但是,如果我试图手动编辑和更新依赖方的
FederationMetadata.xml
以添加upn
作为索赔类型,或使现有索赔类型之一成为非可选的,我会遇到以下错误-ID6018摘要验证失败…
如果我对这两个选项都返回“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>
eWoZYLA/oMNMWd+S9m0TlbIg2rUSuumAckA0BTdAqbg=
YMBUBSY42ZBLFDP4ZFEO06UT317C/xdMUF7PrOhPpShkDtbigg1TWq3tGYEa35+XPFJQQCSEHH07FTKXOH6U6NGQBGCMZ4YAOBTA3BDBBGMGULL6WWQIXNN2ER1MRZYF2MIM3T4JFL6EOOZ0MSNSYUTVI9OQ03EFWEDN2ZOI=
证书数据
证书数据
https://MyAspnetSite.com:4455/
https://MyAspnetSite.com:4455/
您不能直接修改FederationMetadata文档,因为它是经过数字签名的。如果您这样做,它将被ADFS拒绝,因为它认为它已被篡改
无论如何,元数据文档不能控制ADF中发布的声明。除了添加RP,您还需要在ADF中创建规则,定义将为此RP发布的索赔
因为CRM解释了如何做。好吧,为了将来可能遇到这种情况的可怜的灵魂的利益,我将记录我遇到的问题:
“添加STS引用”向导以错误的方式更改了我的web.config 我不知道为什么会这样,可能是因为我有一个预先存在的
部分,但向导在\\
下添加了
部分和其他各种东西,但这些东西似乎什么都没有做。我最终删除了它并手动添加了相应的
部分。这似乎起到了作用。谢谢,我看过这篇文章,然后在我的RP中添加了
upn
声明。也许我也会尝试添加这里提到的其他声明(名称和SID)并报告。好吧,我遵循了该文档,但仍然-我得到了0个声明。。还有其他想法吗?你提到“你的ASP.NET网站”。在ADFS中,每个应用程序都是不同的依赖方。CRM将是其中之一,你的应用程序将是另一个。您需要为每个令牌配置令牌颁发规则。当然有。对不起,如果我不清楚;我将其设置为一个不同的RP,使用与(工作)crm RPI相同的发布规则,从最简单的配置开始:一个带有ADF的简单网站,然后将crm添加到图片中。