2017-06-15 2 views
0

Je reçois des messagesMSAL Web API d'autorisation a été refusée pour cette erreur de demande

{ "Message": "Authorization has been denied for this request." } 

lorsque vous essayez d'utiliser l'API de https://github.com/AzureADQuickStarts/AppModelv2-WebAPI-DotNet comme on le voit dans la capture d'écran postman ci-dessous:

enter image description here

J'essaie de l'appeler du fichier js

$.ajax({ 
    type: "GET", 
    url: window.config.webApi + "TodoList/Get", 
    headers: { 
     'Authorization': 'Bearer ' + accessToken, 
    }, 
}).done(function (data) { 
    logMessage("Web APi returned:\n" + JSON.stringify(data)); 
}) 
.fail(function (jqXHR, textStatus) { 
    logMessage("Error calling the Web api:\n" + textStatus); 
}); 
+0

Pouvez-vous publier votre code de contrôleur WebAPI? Également le code postal de votre classe de démarrage de l'API Web –

+0

Vous devez vérifier le jeton d'accès dans un service comme jwt.io. Vérifiez que la demande d'audience correspond à votre API. – juunas

Répondre

1

Basé sur le jeton dans la figure, vous avez acquis le access_token avec compte Microsoft qui n'est pas capable de décoder.

AFAIK, dans ce scénario, d'appeler l'API Web qui protégé par Azure application AD V2.0, nous pouvons en utilisant la id_token que le appid est le même que l'application que vous utilisiez pour protéger l'API Web. Et si vous déboguez le code et capturez la demande en utilisant Fiddler, l'exemple de code que vous avez mentionné utilise également id_token pour envoyer la demande d'autorisation.

S'il vous plaît n'hésitez pas à me faire savoir si cela fonctionne pour vous.