Maison >développement back-end >C++ >Comment implémenter l'authentification par jeton du porteur JWT dans l'API Web ASP.NET sur IIS ?
Les applications distribuées modernes nécessitent souvent une authentification plus robuste que les méthodes traditionnelles de l'API Web ASP.NET telles que les formulaires ou l'authentification Windows. Ce guide détaille la mise en œuvre de l'authentification par jeton du porteur JWT dans une API Web hébergée sur IIS.
1. Génération de jetons
Un jeton JWT comprend un en-tête, des revendications et une signature. Le System.IdentityModel.Tokens.Jwt
package NuGet facilite la génération de jetons à l'aide de HMACSHA256 avec une clé symétrique.
<code class="language-csharp">public static string GenerateToken(string username, int expireMinutes = 20) { var symmetricKey = Convert.FromBase64String(Secret); var tokenHandler = new JwtSecurityTokenHandler(); ... return token; }</code>
2. Validation des jetons
La validation du jeton est réalisée à l'aide de :
<code class="language-csharp">private static bool ValidateToken(string token, out string username) { ... }</code>
Cela constitue le cœur d'un attribut de filtre d'authentification personnalisé :
<code class="language-csharp">public class JwtAuthenticationAttribute : Attribute, IAuthenticationFilter { ... }</code>
3. Demander une authentification
Appliquez le JwtAuthenticationAttribute
aux actions ou itinéraires nécessitant une authentification. Le filtre valide le JWT et fournit un ClaimsPrincipal
(ou null en cas d'échec).
4. Autorisation
Utilisez le AuthorizeAttribute
à l'échelle mondiale pour restreindre l'accès anonyme. Dans les actions sécurisées, récupérez les détails de l'utilisateur depuis le ClaimsPrincipal
.
Cette méthode permet l'authentification du jeton du porteur JWT dans votre API Web ASP.NET hébergée par IIS sans middleware OWIN, offrant ainsi une autorisation sécurisée et évolutive pour vos services Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!