¿Es la primera vez que usas Auth0? Aprende cómo funciona Auth0 y lee sobre cómo implementar la autenticación y autorización de APIs con OAuth 2.0.
Primeros pasos
Microsoft.Owin.Security.Jwt. Cada API de Auth0 usa el identificador de API, que su aplicación necesita para validar el token de acceso.
Este ejemplo muestra:
- Cómo comprobar si hay un JSON Web Token (JWT) en el encabezado
Authorizationde una solicitud HTTP entrante. - Cómo comprobar si el token es válido mediante el conjunto de claves web JSON (JWKS) de su cuenta de Auth0. Para obtener más información sobre cómo validar tokens de acceso, consulte Validar tokens de acceso.
Crear una API
En la sección APIs del Auth0 Dashboard, haz clic en Create API. Proporciona un nombre y un identificador para tu API, por ejemplo,
De forma predeterminada, tu API usa RS256 como algoritmo de firma de tokens. Dado que RS256 usa un par de claves privada/pública, los tokens se verifican con la clave pública de tu cuenta de Auth0. La clave pública está en formato JSON Web Key Set (JWKS), y se puede acceder a ella aquí.
https://quickstarts/api. Más adelante, usarás el identificador como audience al configurar la verificación del Token de acceso. Deja Signing Algorithm como RS256.
Definir permisos
Los permisos le permiten definir cómo se puede acceder a los recursos en nombre del usuario con un token de acceso determinado. Por ejemplo, puede optar por conceder acceso de lectura al recurso 
messages si los usuarios tienen el nivel de acceso de gerente, y acceso de escritura a ese recurso si tienen el nivel de acceso de administrador.Puede definir los permisos permitidos en la vista Permissions de la sección APIs del Auth0 Dashboard.
Este ejemplo usa el scope
read:messages.Configure el proyecto de ejemplo
El código de ejemplo incluye una sección
appsettings en Web.config que se configura para usar el dominio de Auth0 y el Identificador de API correctos para tu API. Si descargas el código desde esta página, se rellenará automáticamente. Si usas el ejemplo de Github, tendrás que rellenarlo tú mismo.web.config
Instala las dependencias
Para usar los tokens de acceso de Auth0 con ASP.NET, use el middleware JWT de OWIN, disponible en el paquete NuGet
Microsoft.Owin.Security.Jwt.Verificar la firma del token
Como el middleware JWT de OWIN no usa OpenID Connect Discovery de forma predeterminada, deberá proporcionar un
IssuerSigningKeyResolver personalizado. Para ello, agregue lo siguiente al archivo Support/OpenIdConnectSigningKeyResolver.cs:Anteriormente, este resolvedor personalizado se publicaba como parte del paquete
Auth0.OpenIdConnectSigningKeyResolver a través de NuGet. Como este paquete ya no está disponible, deberá proporcionarlo usted mismo.OpenIdConnectSigningKeyResolver.cs
OpenIdConnectSigningKeyResolver descargará automáticamente el conjunto de claves web JSON utilizado para firmar los tokens RS256 desde el endpoint de configuración de OpenID Connect (en /.well-known/openid-configuration). Luego podrá usarlo para resolver la clave de firma del emisor, como se muestra en el código de registro de JWT a continuación.Configurar la autenticación con JWT
Vaya al método
Configuration de la clase Startup y agregue una llamada a UseJwtBearerAuthentication, pasando las JwtBearerAuthenticationOptions configuradas.JwtBearerAuthenticationOptions debe especificar el identificador de API de Auth0 en la propiedad ValidAudience y la ruta completa al dominio de Auth0 como ValidIssuer. Deberá configurar IssuerSigningKeyResolver para que use la instancia de OpenIdConnectSigningKeyResolver para resolver la clave de firma:Startup.cs
Validar los alcances
El middleware de JWT anterior verifica que el Token de acceso incluido en la solicitud sea válido; sin embargo, todavía no incluye ningún mecanismo para comprobar que el token tenga el scope necesario para acceder a los recursos solicitados.Cree una clase llamada
ScopeAuthorizeAttribute que herede de System.Web.Http.AuthorizeAttribute. Este atributo de autorización comprobará que el claim scope emitido por su inquilino de Auth0 esté presente y, en ese caso, se asegurará de que el claim scope contenga el scope solicitado.ScopeAuthorizeAttribute.cs
Protege los endpoints de la API
Las rutas que se muestran a continuación están disponibles para las siguientes solicitudes:
GET /api/public: disponible para solicitudes no autenticadasGET /api/private: disponible para solicitudes autenticadas que contienen un token de acceso sin alcances adicionalesGET /api/private-scoped: disponible para solicitudes autenticadas que contienen un token de acceso con elscoperead:messagesotorgado
[Authorize] para proteger un endpoint. Para garantizar que esté presente un scope al llamar a un endpoint de API específico, decore la acción con el atributo ScopeAuthorize y pase el nombre del scope requerido en el parámetro scope.ApiController.cs
VerificaciónAhora que ha configurado la aplicación, ejecútela y verifique lo siguiente:
GET /api/publicesté disponible para solicitudes no autenticadas.GET /api/privateesté disponible para solicitudes autenticadas.GET /api/private-scopedesté disponible para solicitudes autenticadas que incluyan un token de acceso con el scoperead:messages.
Recursos adicionales
Aplicación de ejemplo
Aplicación de ejemplo completa para esta guía de inicio rápido
Proveedores de identidad
Configure otros proveedores de identidad
Autenticación multifactor
Habilite la autenticación multifactor
Protección contra ataques
Obtenga más información sobre la protección contra ataques
Rules
Amplíe Auth0 con lógica personalizada
Foro de la comunidad
Obtenga ayuda de la comunidad de Auth0