Compartir a través de


Errores no autorizados (401) al invocar LAS API

Consulte el artículo sobre la serie de solución de problemas de Azure API Management, este es el tercer escenario del laboratorio. Asegúrese de que ha seguido las instrucciones de configuración del laboratorio según esto para volver a crear el problema.

Versión original del producto: servicio API Management
Número de KB original: 4464930

Nota:

¿Le resultó útil este artículo? Su opinión es importante para nosotros. Use el botón Comentarios de esta página para indicarnos lo bien que ha funcionado este artículo o cómo podemos mejorarlo.

Síntomas

La API echo comenzó repentinamente a producir diversos tipos de errores HTTP 401: no autorizados al invocar las operaciones en él. Crear un recurso y recuperar operaciones de recursos muestran este mensaje de error:

{
"statusCode": 401,
"message": "Acceso denegado debido a una clave de suscripción no válida. Asegúrese de proporcionar una clave válida para una suscripción activa".
}

Mientras que el resto de las operaciones se muestran

{
"statusCode": 401,
"message": "Acceso denegado debido a la falta de clave de suscripción. Asegúrese de incluir la clave de suscripción al realizar solicitudes a una API".
}

El código de respuesta HTTP esperado para todas las operaciones es 200, pero el cuerpo de la respuesta variará, ya que la API de back-end siempre devuelve lo que envíe como un cuerpo de solicitud además de los encabezados.

Pasos para solucionar problemas

  • Para acceder a la API, los desarrolladores primero deben suscribirse a un producto. Cuando se suscriben, obtienen una clave de suscripción que se envía como parte del encabezado de solicitud que es buena para cualquier API de ese producto. Ocp-Apim-Subscription-Key es el encabezado de solicitud enviado para la clave de suscripción del producto asociado a esta API. La clave se rellena automáticamente.

  • Con respecto al error Acceso denegado debido a una clave de suscripción no válida. Asegúrese de proporcionar una clave válida para una suscripción activa, es claro que está enviando un valor incorrecto del encabezado de solicitud Ocp-Apim-Subscription-Key al invocar operaciones de creación de recursos y Recuperación de recursos .

  • Puede comprobar la clave de suscripción de un producto determinado desde el portal para desarrolladores de APIM; para ello, vaya a la página Perfil después del inicio de sesión, como se muestra a continuación.

  • Seleccione el botón Mostrar para ver las claves de suscripción de los productos respectivos a los que se ha suscrito.

    Captura de pantalla de las claves de suscripción para los productos respectivos.

  • Si comprueba los encabezados que se envían desde la pestaña Prueba , observe que el valor del encabezado de solicitud Ocp-Apim-Subscription-Key no es correcto. Es posible que se pregunte cómo es posible, ya que APIM rellena automáticamente este encabezado de solicitud con la clave de suscripción correcta.

  • Vamos a comprobar la definición de front-end de Crear recurso y Recuperar operaciones de recursos en la pestaña Diseño . Tras una inspección cuidadosa, observaría que estas operaciones tienen un valor codificado de forma rígida incorrecta del encabezado de solicitud Ocp-Apim-Subscription-Key agregado en la pestaña Encabezados .

  • Puede quitarlo, esto debe resolver el problema de clave de suscripción no válida, pero todavía se producirá un error de clave de suscripción que falta.

    Puede mostrarse el siguiente mensaje de error:

    HTTP/1.1 401 No autorizado

    Longitud del contenido: 152
    Content-Type: application/json
    Fecha: Sun, 29 jul 2018 14:29:50 GMT
    Vary: Origin WWW-Authenticate: AzureApiManagementKey realm="https://pratyay.azure-api.net/echo",name="Ocp-Apim-Subscription-Key",type="header" {
    "statusCode": 401,
    "message": "Acceso denegado debido a la falta de clave de suscripción. Asegúrese de incluir la clave de suscripción al realizar solicitudes a una API". }

  • Vaya a echo APIsettings y compruebe si está asociado a cualquiera de los productos disponibles. Si no es así, debe asociar esta API a un producto para obtener una clave de suscripción.

    En primer lugar, los desarrolladores deben suscribirse a un producto para acceder a la API. Al suscribirse, obtienen una clave de suscripción que funciona con cualquier API de ese producto. Si creó la instancia de APIM, ya es un administrador, así que, de forma predeterminada, está suscrito a todos los productos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.