/// <summary> /// Get the user id from the request /// </summary> /// <param name="httpContext">HTTP context</param> /// <param name="source">JWT source</param> /// <returns>User id</returns> public async Task <Guid> GetUserIdFromRequestAsync(HttpContext httpContext, JWTAuthorizeTokenSource source = JWTAuthorizeTokenSource.Header) { return(await Task.Run(() => { var token = httpContext.Request.GetJWTAuthorizeToken(source); if (string.IsNullOrEmpty(token)) { throw new NullReferenceException($"The token is null or empty"); } if (!EnsureTokenIsValid(token)) { throw new InvalidTokenException(token); } var claims = GetPrincipal(token); var userIdClaim = claims.FindFirst(claim => claim.Type == ClaimTypes.Sid); if (userIdClaim is null) { throw new EntityNotFoundException <ApplicationUser>(); } return Guid.Parse(userIdClaim?.Value); })); }
/// <summary> /// Get the logged user name from the request /// </summary> /// <param name="httpContext">HTTP context</param> /// <param name="source">JWT source</param> /// <returns>User name</returns> public string GetLoggedUserNameFromRequest(HttpContext httpContext, JWTAuthorizeTokenSource source = JWTAuthorizeTokenSource.Header) { var token = httpContext.Request.GetJWTAuthorizeToken(source); if (string.IsNullOrEmpty(token)) { throw new NullReferenceException($"The token is null or empty"); } if (!EnsureTokenIsValid(token)) { throw new InvalidTokenException(token); } var claims = GetPrincipal(token); return(claims?.FindFirstValue(ClaimTypes.Name)); }
/// <summary> /// Get the user role id from the request /// </summary> /// <param name="httpContext">HTTP context</param> /// <param name="source">JWT source</param> /// <returns>Role id</returns> public async Task <Guid> GetRoleIdFromRequestAsync(HttpContext httpContext, JWTAuthorizeTokenSource source = JWTAuthorizeTokenSource.Header) { var token = httpContext.Request.GetJWTAuthorizeToken(source); if (string.IsNullOrEmpty(token)) { throw new NullReferenceException($"The token is null or empty"); } if (!EnsureTokenIsValid(token)) { throw new InvalidTokenException(token); } var claims = GetPrincipal(token); var roleClaim = claims.FindFirst(claim => claim.Type == ClaimTypes.Role); return(await this.ApplicationRoleService.GetRoleIdAsync(roleClaim?.Value)); }
/// <summary> /// Extrait la valeur du jeton d'authorization depuis l'entête de la requête /// </summary> /// <param name="request">Requête reçue</param> /// <param name="source">Source ou récupérer le token</param> /// <returns></returns> public static string GetJWTAuthorizeToken(this HttpRequest request, JWTAuthorizeTokenSource source = JWTAuthorizeTokenSource.Header) { string authorizeToken = null; if (source == JWTAuthorizeTokenSource.Header) { //Récupération depuis le header authorizeToken = request.Headers[AUTHORIZE]; if (!string.IsNullOrEmpty(authorizeToken)) { authorizeToken = authorizeToken.Remove(0, BEARER_NAME.Length); } } else { //On récupère le token depuis les cookies request.Cookies.TryGetValue(AUTHORIZE, out authorizeToken); } return(authorizeToken); }