0

Windows Azure Active Directory認証を使用しています。私は何をこの見当がつかないWindows Azure Active Directory認証例外

Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Error: 0 : Authentication failed 
System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier: 'SecurityKeyIdentifier 
(
    IsReadOnly = False, 
    Count = 2, 
    Clause[0] = X509ThumbprintKeyIdentifierClause(Hash = 0x61B44041161C13F9A8B56549287AF02C16DDFFDB), 
    Clause[1] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause 
) 

:これはAzure.Itで交流#のWeb APIサービスはかなりの時間のために働いていますが、今、私は次の例外を取得し始めまし呼び出すのAC#のWindowsサービスを保護するために使用されます

private void ConfigureAuth(IAppBuilder app) 
{ 
    app.UseWindowsAzureActiveDirectoryBearerAuthentication(
     new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
     { 
      TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters 
      { 
       ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] 
      }, 
      Tenant = ConfigurationManager.AppSettings["ida:Tenant"] 
     }); 
} 
01:手段またはどのようにそれを修正する:(

更新

キーロールオーバー私のウェブサービスについてのコメントへの回答では、次のコードを使用しています

このリンクによれば、このタイプの問題に対して保護されている必要があります。

子供を含むトークンの開始は、次のようになります。

token: '{"typ":"JWT","alg":"RS256","x5t":"YbRAQRYcE_motWVJKHrwLBbd_9s","kid":"YbRAQRYcE_motWVJKHrwLBbd_9s"} 

アップデート2

Windowsサービスでトークンを取得するための私のコード:

internal string GetAuthorizationToken() 
    { 
     string authority = String.Format(aadInstance, tenant); 
     var authContext = new AuthenticationContext(authority); 

     var authResult = AcquireToken(authContext); 

     return authResult == null ? null : authResult.CreateAuthorizationHeader(); 
    } 

    /// <summary> 
    /// Acquires the token. 
    /// </summary> 
    /// <param name="authContext">The authentication context.</param> 
    /// <returns>Authentication Result</returns> 
    private AuthenticationResult AcquireToken(AuthenticationContext authContext) 
    { 
     try 
     { 

      return authContext.AcquireTokenAsync(apiResourceId, clientId, new UserPasswordCredential(user, pass)).Result; 
     } 
     catch (Exception) 
     { 
      return null; 
     } 
    } 
+0

これは、このhttps://docs.microsoft.com/en-us/azure/active-directory/active-directory-signing-key-rolloverに関連する可能性がありますか? – 4c74356b41

答えて

0

この例外アプリケーションがAzureのトークンのキーIDを使用して署名鍵を検索しようとしているときに発生しますが、Azureの鍵yロールオーバー。

この問題を解決するには、Windowsサービスで新しいアクセストークンを取得してください。

+0

サービスはWebサービスに連絡するたびに新しいキーを取得します。 – DasDave

+0

** Fiddler **を使用してトークンをキャプチャして、[here](https://jwt.io/)でデコーダーしますか?トークンの中の 'kid'の価値は何ですか? –

+0

私のオリジナルの投稿に追加されました。興味深いことに、あなたがリンクしているツールを使用すると、無効な署名も表示されます。 – DasDave

関連する問題