0

この (非常に不十分に書かれた)ウォークスルーで説明されているように、Microsoft Dynamics 2011 の SSO を実装しようとしています。
ADFS マネージャーで自分の ASP.NET Web サイトを証明書利用者として構成し、指示に従って STS 参照を追加しました。
ADFS で UPN フィールドの発行変換規則を定義しました。

私の ASP.NET アプリケーションでは、
IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];これを行うと、 のインスタンスを取得しますがMicrosoft.IdentityModel.Claims.ClaimsIdentity、そのClaimsコレクションは空です。

FederationMetadata.xmlただし、 「add sts」ウィザードによって生成された には、 forとの 2 つ<auth:ClaimType>の要素しか含まれていないことに気付きました。両方とも optional=true です。 ただし、証明書利用者を手動で編集および更新してクレーム タイプとして追加しようとすると、または既存のクレーム タイプのいずれかをオプションではないものにしようとすると、次のエラーが発生します。 両方を「optional=true」に戻すと、エラーは発生しません。namerole
FederationMetadata.xmlupnID6018 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

さて、将来これに遭遇するかもしれない貧しい人々のために、私にとって何が問題だったのかを記録しておきます

その理由はわかりません。おそらく、既存の<system.serviceModel>セクションがあったためですが、ウィザードが<claimTypeRequirements>セクションとその他のあらゆる種類のものを追加しましたが、<system.serviceModel> \ <bindings> \ <ws2007FederationHttpBinding>実際には何もしていないようです. 私はそれを削除し、適切なセクション
を手動で追加しました。 それはトリックを行ったように見えました。<microsoft.identityModel>

于 2013-04-28T06:59:08.503 に答える
0

デジタル署名されているため、FederationMetadata ドキュメントを直接変更することはできません。その場合、改ざんされていると見なされるため、ADFS によって拒否されます。

とにかく、メタデータ ドキュメントは、ADFS で発行される要求を制御しません。RP を追加するだけでなく、この RP に対して発行される要求を定義する規則を ADFS で作成する必要があります。

この CRM の他のドキュメントでは、その方法について説明しています。

于 2013-04-15T14:41:59.670 に答える