Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试为dynamics 2011 w/ADFS 2.0声明实施SSO-声明未通过_C#_Dynamics Crm 2011_Wif_Adfs2.0 - Fatal编程技术网

C# 尝试为dynamics 2011 w/ADFS 2.0声明实施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

我正在尝试为microsoft dynamics 2011实现一个SSO,如本文所述(编写得非常糟糕)。
我已在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添加到图片中。