コード例 #1
0
        /// <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);
            }));
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        /// <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);
        }