3

以前の質問Azure ACS Set Up in C#に答えてくれた Gaurav Mantri に感謝します。

ただし、次の行がどのように保護されているか、誰かが私に説明できますか?

if (!ClaimsPrincipal.Current.Identity.IsAuthenticated)

ACS スキーマのクライアントは都合よく中間者です。たとえば、彼は Facebook へのログインに失敗する可能性があり、これは ACS に中継されます (この部分は保護されていると想定しています) が、ACS はクライアントに戻るように指示しています。障害について依拠当事者に。

その最後の部分はどのように保護されていますか? クライアントが ACS メッセージの "Fail" を "Success" に改ざんするのを阻止するものは何ですか? Asp.Net は、署名を検証してメッセージを復号化する方法をどのように知っているでしょうか?

さらに言えば、メッセージ交換を暗号化/署名するためにどのキーを使用していましたか? そして、それは webfarm/Azure 環境でどのように機能しますか?

4

1 に答える 1

5

メッセージ交換に使用されるキーを指定します。

管理ポータルで Azure ACS を構成するときに、トークンの署名に使用される秘密キーを指定します ([証明書とキー] タブ)。

Azure ACS を使用するように Web アプリケーションを構成すると、署名を検証するための証明書への参照が web.config に追加されます。

<issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
    <authority name="https://xxxxx.accesscontrol.windows.net/">
      <keys>
        <add thumbprint="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
      </keys>
      <validIssuers>
        <add name="https://xxxxx.accesscontrol.windows.net/" />
      </validIssuers>
    </authority>
  </issuerNameRegistry>

更新 証明書は、ACS によって X509Certificate 要素の署名付きセキュリティ トークンと共に Web アプリケーションに渡されます (名前空間を削除しました)。

<RequestSecurityTokenResponse>
    <Lifetime>
        <Created>2013-06-19T06:15:16.618Z</Created>
        <Expires>2013-06-19T07:15:16.618Z</Expires>
    </Lifetime>
   <AppliesTo>
       <EndpointReference>
           <Address>http://xxx.cloudapp.net/</Address>
      </EndpointReference>
   </AppliesTo>
   <RequestedSecurityToken>
       <Assertion ID="xxx" IssueInstant="2013-06-19T06:15:16.636Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
           <Issuer>https://xxx.accesscontrol.windows.net/</Issuer>
           <Signature>
               <SignedInfo>
                   <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                   <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
                   <Reference URI="xxx">
                       <Transforms>
                           <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                           <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                       </Transforms>
                       <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                       <DigestValue>xxx</ds:DigestValue>
                   </Reference>
              </SignedInfo>
              <SignatureValue>xxx</SignatureValue>
              <KeyInfo>
                  <X509Data>
                      <X509Certificate>xxx</X509Certificate>
                  </X509Data>
              </KeyInfo>
        </Signature>
        <Subject>
            <NameID>iiiii</NameID>
            <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
        </Subject>
        <Conditions NotBefore="2013-06-19T06:15:16.618Z" NotOnOrAfter="2013-06-19T07:15:16.618Z">
            <AudienceRestriction><Audience>http://xxx.cloudapp.net/</Audience></AudienceRestriction>
        </Conditions>
        <AttributeStatement>
            <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"><AttributeValue>aaa</AttributeValue></Attribute>
        </AttributeStatement>
        <AuthnStatement AuthnInstant="2013-06-19T06:15:15.999Z">
            <AuthnContext>
                <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
           </AuthnContext>
        </AuthnStatement>
   </Assertion>

于 2013-06-18T16:50:44.190 に答える