0

我正在尝试为 microsoft dynamics 2011 实现 SSO,如本(写得非常糟糕)演练中所述。
我已将我的 ASP.NET 网站配置为 ADFS 管理器中的依赖方,并按照说明添加 STS 引用。
我已经为 ADFS 中的 UPN 字段定义了一个发布转换规则。

在我的 ASP.NET 应用程序中,执行此操作时,
IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];我确实得到了 的实例Microsoft.IdentityModel.Claims.ClaimsIdentity,但是,它的Claims集合是空的。

但是,我注意到FederationMetadata.xml“添加 sts”向导生成的仅包含 2 个<auth:ClaimType>元素 - fornamerole,两者都是 optional=true。
但是,如果我尝试手动编辑和更新我的依赖方FederationMetadata.xml以添加upn为声明类型,或者使现有声明类型之一成为非可选,我会遇到以下错误 - ID6018 Digest verification failed...
如果我将两者都恢复为“可选=真”,则不会发生错误。

任何人都可以提供有关如何将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>
4

2 回答 2

0

您不能直接修改 FederationMetadata 文档,因为它是经过数字签名的。如果这样做,它将被 ADFS 拒绝,因为它认为它已被篡改。

无论如何,元数据文档不控制 ADFS 中发出的声明。除了添加 RP 之外,您还需要在 ADFS 中创建规则来定义将为该 RP 发出的声明。

CRM 的其他文档解释了如何执行此操作。

于 2013-04-15T14:41:59.670 回答
0

好吧,为了将来可能会遇到这种情况的可怜人的利益,我将记录对我来说是什么问题:
“添加 STS 引用”向导以错误的方式更改了我的 web.config。

我不知道为什么会这样,也许是因为我有一个预先存在的<system.serviceModel>部分,但是向导添加了该<claimTypeRequirements>部分和其他各种<system.serviceModel> \ <bindings> \ <ws2007FederationHttpBinding>似乎并没有真正做任何事情的东西。
我最终删除了它并手动添加了相应的<microsoft.identityModel> 部分。
这似乎成功了。

于 2013-04-28T06:59:08.503 回答