Ich verwende Windows Azure Active Directory-Authentifizierung. Dies wird verwendet, um eine C# Windows-Dienst zu sichern, die API-Service aC# Web in Azure.It Anrufe hat seit geraumer Zeit gearbeitet, aber jetzt habe ich begonnen erhalte die folgende Ausnahme:Windows Azure Active Directory-Authentifizierung Ausnahme
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
)
Ich habe keine Ahnung, was diese bedeutet oder wie man es beheben :(
aktualisiert
In Antwort auf den Kommentar über Key-Rollover meines Web-Service wird mit dem folgenden Code:
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"]
});
}
was laut diesem Link bedeutet, dass es gegen diese Art von Problem gesichert sein sollte.
Der Start des Token sieht das Kind darunter wie folgt aus:
token: '{"typ":"JWT","alg":"RS256","x5t":"YbRAQRYcE_motWVJKHrwLBbd_9s","kid":"YbRAQRYcE_motWVJKHrwLBbd_9s"}
Update 2
Mein Code Token im Windows-Dienst zu erwerben:
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;
}
}
könnte dies zu diesem https://docs.microsoft.com/en-us/azure/active-directory/active-directory-signing-key-rollover verwandt werden? – 4c74356b41