/// <summary>
        ///
        /// </summary>
        /// <param name="services"></param>
        void AddAuth(IServiceCollection services)
        {
            //读取配置文件
            var audienceConfig        = Configuration.GetSection("Audience");
            var signingKey            = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(audienceConfig["Secret"]));
            var signingCredentials    = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
            var permissionRequirement = new PermissionRequirement(
                "/api/denied",
                null,
                ClaimTypes.Role,
                audienceConfig["Issuer"],
                audienceConfig["Audience"],
                signingCredentials,
                expiration: TimeSpan.FromSeconds(1000000)//设置Token过期时间
                );

            services.AddSingleton(permissionRequirement);
        }
示例#2
0
        /// <summary>
        /// 获取基于JWT的Token
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public static dynamic BuildJwtToken(Claim[] claims, PermissionRequirement permissionRequirement)
        {
            var now = DateTime.UtcNow;
            var jwt = new JwtSecurityToken(
                issuer: permissionRequirement.Issuer,
                audience: permissionRequirement.Audience,
                claims: claims,
                notBefore: now,
                expires: now.Add(permissionRequirement.Expiration),
                signingCredentials: permissionRequirement.SigningCredentials
                );
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);
            var response   = new
            {
                Status       = true,
                access_token = encodedJwt,
                expires_in   = permissionRequirement.Expiration.TotalMilliseconds,
                token_type   = "Bearer"
            };

            return(response);
        }