1

新しい JWT ハンドラー ライブラリ (System.IdentityModel.Tokens.Jwt) のバージョン 1.0.0 を ASP.NET MVC 4 アプリケーションに統合して、ACS から Azure の JWT トークンを処理するにはどうすればよいですか?

アプリケーションを実行しようとすると、次のエラーが表示されます。

[SecurityTokenValidationException: Jwt10329: 署名を検証できません。Configuration.IssuerTokenResolver.ResolveToken が null を返しました。jwt.Header.SigningKeyIdentifier: 'SecurityKeyIdentifier (IsReadOnly = False、カウント = 2、条項 [0] = X509ThumbprintKeyIdentifierClause (ハッシュ = 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)、条項 [1] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause ) '.] System.IdentityModel.Tokens .JwtSecurityTokenHandler.ValidateSignature(JwtSecurityToken jwt) +1275
System.IdentityModel.Tokens.JwtSecurityTokenHandler.ValidateToken(JwtSecurityToken jwt) +113
System.IdentityModel.Tokens.JwtSecurityTokenHandler.ValidateToken(SecurityToken トークン) +339
System.IdentityModel.Tokens.SecurityTokenHandlerCollection.ValidateToken(SecurityToken トークン)
+73 System.IdentityModel.Services.TokenReceiver.AuthenticateToken(SecurityToken トークン、ブール値の ensureBearerToken、文字列 endpointUri) +120
System.IdentityModel.Services.WSFederationAuthenticationModule.SignInWithResponseMessage(HttpRequestBase リクエスト) + 493
System.IdentityModel.Services.WSFederationAuthenticationModule.OnAuthenticateRequest(オブジェクト送信者、EventArgs 引数) +364
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値&完了同期) +69

私のweb.configは次のように構成されています:

<system.identityModel>

    <identityConfiguration>
      <audienceUris>
        <add value="http://127.0.0.1:81/" />
      </audienceUris>

      <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <trustedIssuers>
                  <add thumbprint="PRIVATEKEY"
                     name="https://CUSTOM.accesscontrol.windows.net/" />
        </trustedIssuers>
      </issuerNameRegistry>

      <securityTokenHandlers>
        <add type="System.IdentityModel.Tokens.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt" />
        <securityTokenHandlerConfiguration>
          <certificateValidation certificateValidationMode="PeerTrust" />
        </securityTokenHandlerConfiguration>
        <add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </securityTokenHandlers>

    </identityConfiguration>

  </system.identityModel>

  <system.identityModel.services>
    <federationConfiguration>
      <cookieHandler requireSsl="false" />
      <wsFederation passiveRedirectEnabled="false" issuer="https://staging.accesscontrol.windows.net/v2/wsfederation" realm="http://127.0.0.1:81/" requireHttps="false" />
    </federationConfiguration>

  </system.identityModel.services>

JWT トークンを返すように Azure ACS をセットアップし、web.config に正しいセキュリティ サムネイルを設定しましたが、このエラーが発生する理由がわかりません。洞察はありますか?

4

2 に答える 2

1

私は同じ問題に遭遇しました。JWT では、Web アプリはトークンを検証するために発行者について何かを知る必要があります。X509 証明書が JWT にないため、証明書ストアで利用できる必要があります。Vittorio B. は、この問題とそれに対処する手順について、 WIF アプリケーションでの JWT ハンドラーの使用」セクションで説明しています。

于 2013-06-12T19:21:05.587 に答える
0

新しい x.509 証明書を作成し、プライマリ X.509 証明書として Azure ACS にアップロードしてから、ローカル コンピューターの資格情報ストアにインストールすることで、問題を解決できました。

次の手順に従って証明書を作成しました。

http://blogs.msdn.com/b/cclayton/archive/2012/03/21/windows-azure-and-x509-certificates.aspx

makecert コマンドを使用して証明書を生成しました (必ず独自の名前空間を追加してください)

makecert.exe -r -pe -a sha1 -n "CN=YOURNAMESPACE.accesscontrol.windows.net" -ss My -sr CurrentUser -len 2048 -sky exchange -sy 24

次に、certmgr.mcs を使用して、証明書を PFX ファイルと CER ファイルの両方としてエクスポートしました。

PFX ファイルを Azure ACS にインポートしました (管理ポータルを使用)。これが完了したら、新しいサムネイルをコピーして、web.config ファイルの古い値に貼り付けました。

最後に、このブログ投稿に記載されているように、CER ファイルを証明書ストアにインストールしました。

http://www.cloudidentity.com/blog/2012/11/20/introducing-the-developer-preview-of-the-json-web-token-handler-for-the-microsoft-net-framework-4- 5-2/

上記のブログ投稿で関心のあるテキストは、次のテキストです。

.CER. ファイルをダブルクリックし、[Install Certificate…] ボタンをクリックして、[Local Machine]、[Trusted People] を選択します。

すべてが機能するようになりました。これがあなたにとってもうまくいくことを願っています。さらにサポートが必要な場合は、お尋ねください。正しい方向に向けてお手伝いします

于 2014-02-13T03:56:11.457 に答える