コード例 #1
0
        public async Task <JwtToken> GenerateTokenAsync(User user)
        {
            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id),
                new Claim(Constants.Constants.Strings.JwtClaimIdentifiers.Rol,
                          Constants.Constants.Strings.JwtClaims.ApiAccess),
                new Claim(JwtRegisteredClaimNames.Jti, await _jwtOptions.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(_jwtOptions.IssuedAt).ToString(),
                          ClaimValueTypes.Integer64)
            };

            var jwt = new JwtSecurityToken(
                issuer: _jwtOptions.Issuer,
                audience: _jwtOptions.Audience,
                claims: claims,
                notBefore: _jwtOptions.NotBefore,
                expires: _jwtOptions.Expiration,
                signingCredentials: _jwtOptions.SigningCredentials);

            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(new JwtToken
            {
                Token = encodedJwt,
                ExpiresIn = (long)_jwtOptions.ValidFor.TotalSeconds,
            });
        }
コード例 #2
0
        private async Task <IEnumerable <Claim> > GenerateClaimsIdentity(User user)
        {
            var userClaims = await _userManager.GetClaimsAsync(user);

            var roles = await _userManager.GetRolesAsync(user);

            var roleClaims = new List <Claim>();

            for (int i = 0; i < roles.Count; i++)
            {
                roleClaims.Add(new Claim("roles", roles[i]));
            }
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
                new Claim(JwtRegisteredClaimNames.Jti, await _jwtSettings.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(_jwtSettings.IssuedAt).ToString(),
                          ClaimValueTypes.Integer64),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
                new Claim(Constants.Strings.JwtClaimIdentifiers.Id, user.Id.ToString()),
            }
            .Union(userClaims)
            .Union(roleClaims);

            return(claims);
        }
コード例 #3
0
ファイル: JwtService.cs プロジェクト: 2Buttons/2ButtonsServer
        public async Task <ClaimsIdentity> GenerateClaimsIdentity(int userId, RoleType role)
        {
            _logger.LogInformation($"{nameof(JwtService)}.{nameof(GenerateClaimsIdentity)}.Start");
            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Jti, await _jwtSettings.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, _jwtSettings.IssuedAt.ToUnixEpochDate().ToString(),
                          ClaimValueTypes.Integer64),
                new Claim(ClaimsIdentity.DefaultNameClaimType, userId.ToString(), ClaimValueTypes.Integer, _jwtSettings.Issuer),
                new Claim(ClaimsIdentity.DefaultRoleClaimType, ((int)role).ToString(), ClaimValueTypes.String,
                          _jwtSettings.Issuer)
            };
            var result = new ClaimsIdentity(claims, "AccessToken", ClaimsIdentity.DefaultNameClaimType,
                                            ClaimsIdentity.DefaultRoleClaimType);

            _logger.LogInformation($"{nameof(JwtService)}.{nameof(GenerateClaimsIdentity)}.End");
            return(result);
        }
コード例 #4
0
ファイル: JwtTokenGenerator.cs プロジェクト: umfaruki/exelor
        public async Task <string> CreateToken(
            string userId,
            string userName,
            string email,
            IEnumerable <Permissions> permissions)
        {
            var claims = new[]
            {
                new Claim(
                    JwtRegisteredClaimNames.Sub,
                    userId),
                new Claim(
                    JwtRegisteredClaimNames.GivenName,
                    userName),
                new Claim(
                    JwtRegisteredClaimNames.Email,
                    email),
                new Claim(
                    JwtRegisteredClaimNames.Jti,
                    await _jwtSettings.JtiGenerator()),
                new Claim(
                    JwtRegisteredClaimNames.Iat,
                    new DateTimeOffset(_jwtSettings.IssuedAt).ToUnixTimeSeconds().ToString(),
                    ClaimValueTypes.Integer64),
                new Claim(
                    JwtRegisteredCustomClaimNames.Permissions,
                    permissions.PackPermissions()),
            };
            var jwt = new JwtSecurityToken(
                _jwtSettings.Issuer,
                _jwtSettings.Audience,
                claims,
                _jwtSettings.NotBefore,
                _jwtSettings.Expiration,
                _jwtSettings.SigningCredentials);

            return(new JwtSecurityTokenHandler().WriteToken(jwt));
        }