Erreurs non autorisées (401) lors de l’appel d’API
En faisant référence à l’article sur Azure Gestion des API Série de résolution des problèmes, il s’agit du troisième scénario du labo. Vérifiez que vous avez suivi les instructions de configuration du labo en fonction de cela, pour recréer le problème.
Version du produit d’origine : service Gestion des API
Numéro de base de connaissances d’origine : 4464930
Note
Cet article vous a-t-il été utile ? Votre avis est important à nos yeux. Utilisez le bouton Commentaires sur cette page pour nous faire savoir dans quelle mesure cet article vous a été utile ou comment nous pouvons l’améliorer.
Symptômes
L’API Echo a soudainement commencé à lever différents types d’erreurs HTTP 401 - Non autorisées lors de l’appel des opérations sous celle-ci. Les opérations de création de ressources et de récupération des ressources affichent ce message d’erreur :
{
« statusCode » : 401,
« message » : « Accès refusé en raison d’une clé d’abonnement non valide. Veillez à fournir une clé valide pour un abonnement actif. »
}
Alors que le reste des opérations s’affiche
{
« statusCode » : 401,
« message » : « Accès refusé en raison d’une clé d’abonnement manquante. Veillez à inclure la clé d’abonnement lors de l’émission de requêtes à une API. »
}
Le code de réponse HTTP attendu pour toutes les opérations est 200, mais le corps de la réponse varie, car l’API back-end fait toujours écho à ce que vous envoyez en tant que corps de requête en plus des en-têtes.
Étapes de dépannage
Pour obtenir l’accès à l’API, les développeurs doivent s’abonner à un produit. Lorsqu’ils s’abonnent, ils obtiennent une clé d’abonnement qui est envoyée dans le cadre de l’en-tête de demande qui est adapté à n’importe quelle API de ce produit. Ocp-Apim-Subscription-Key est l’en-tête de requête envoyé pour la clé d’abonnement du produit associé à cette API. La clé est renseignée automatiquement.
Concernant l’erreur Accès refusé en raison d’une clé d’abonnement non valide. Veillez à fournir une clé valide pour un abonnement actif. Il est clair que vous envoyez une valeur incorrecte de l’en-tête de requête Ocp-Apim-Subscription-Key lors de l’appel des opérations créer une ressource et récupérer des ressources.
Vous pouvez vérifier votre clé d’abonnement pour un produit particulier à partir du portail des développeurs APIM en accédant à la page Profil après la connexion, comme indiqué ci-dessous.
Sélectionnez le bouton Afficher pour afficher les clés d’abonnement des produits respectifs auxquels vous avez souscrit.
Si vous vérifiez les en-têtes envoyés à partir de l’onglet Test , vous remarquez que la valeur de l’en-tête de requête Ocp-Apim-Subscription-Key est incorrecte. Vous vous demandez peut-être comment cela est possible, car APIM remplit automatiquement cet en-tête de requête avec la clé d’abonnement appropriée.
Vérifions la définition frontale des opérations Créer une ressource et récupérer des ressources sous l’onglet Création . Lors d’une inspection minutieuse, vous remarquerez que ces opérations ont obtenu une valeur codée en dur incorrecte de l’en-tête de requête Ocp-Apim-Subscription-Key ajoutée sous l’onglet En-têtes .
Vous pouvez le supprimer, cela doit résoudre le problème de clé d’abonnement non valide, mais vous obtiendrez toujours une erreur de clé d’abonnement manquante.
Vous pouvez recevoir le message d’erreur suivant :
HTTP/1.1 401 Non autorisé
Longueur du contenu : 152
Content-Type: application/json
Date : Soleil, 29 juillet 2018 14:29:50 GMT
Varient : Origin WWW-Authenticate : AzureApiManagementKey realm=" »https://pratyay.azure-api.net/echo
,name="Ocp-Apim-Subscription-Key »,type="header » {
« statusCode » : 401,
« message » : « Accès refusé en raison d’une clé d’abonnement manquante. Veillez à inclure la clé d’abonnement lors de l’émission de demandes à une API. » }Accédez aux APIIsettings Echo et vérifiez s’il est associé à l’un des produits disponibles. Si ce n’est pas le cas, vous devez associer cette API à un produit afin d’obtenir une clé d’abonnement.
Les développeurs doivent s’abonner à un produit pour obtenir l’accès à l’API. Quand ils s’abonnent à un produit, ils obtiennent une clé d’abonnement qui est valable pour toutes les API de ce produit. Si vous avez créé l’instance APIM, vous êtes abonné à chaque produit par défaut, car vous êtes déjà administrateur.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.