예제 #1
0
        /// <summary>
        /// 角色授权服务
        /// </summary>
        /// <typeparam name="TAuthorizationRequirement">自定义验证的标识</typeparam>
        /// <param name="services">服务上下文</param>
        /// <param name="authModel">验证授权配置</param>
        /// <param name="name">定义策略名称</param>
        /// <returns></returns>
        public static IServiceCollection AddRoleService(
            this IServiceCollection services,
            AuthConfigModel authModel
            )
        {
            AuthConfig.Init(authModel);

            // 定义如何生成用户的 Token
            var tokenValidationParameters = AuthConfig.GetTokenValidationParameters();


            // 导入角色身份认证策略
            // 导入角色身份认证策略
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = tokenValidationParameters;
                options.SaveToken = true;
            });

            return(services);
        }
예제 #2
0
 public AuthService(IOptionsSnapshot <AuthConfigModel> authConfigModelAcc, DatabaseContext db, IHttpContextAccessor ctxAcc, IRoleService roleService)
 {
     this.authConfig  = authConfigModelAcc.Value;
     ctx              = ctxAcc.HttpContext !;
     this.db          = db;
     this.roleService = roleService;
 }
        public ActionResult SpaConfig()
        {
            var auth = new AuthConfigModel {
                Authority             = UriHelper.BuildAbsolute(Request.Scheme, Request.Host),
                ClientId              = AppConfig.Identity.JsClient.ClientId,
                RedirectUri           = AppConfig.Identity.JsClient.ClientUri + LoginCallback,
                PostLogoutRedirectUri = AppConfig.Identity.JsClient.ClientUri + LogoutCallback,
                ResponseType          = "code",
            };

            if (AppConfig.Identity.JsClient.AllowedScopes != null)
            {
                auth.Scope = string.Join(" ", AppConfig.Identity.JsClient.AllowedScopes);
            }

            var config = new ConfigModel(auth);

            return(Ok(config));
        }
예제 #4
0
 public AuthBuilder()
 {
     authModel = new AuthConfigModel();
 }
예제 #5
0
 public TokenService(IOptionsSnapshot <AuthConfigModel> authConfigModelAcc)
 {
     m_authConfig = authConfigModelAcc.Value;
 }
예제 #6
0
        public static IServiceCollection AddAuthStartup(this IServiceCollection services, AuthConfigModel authConfig)
        {
            services
            .AddAuthentication(o =>
            {
                o.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                o.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(options =>
            {
                var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authConfig.Key));
                options.TokenValidationParameters.ValidIssuer              = authConfig.Issuer;
                options.TokenValidationParameters.ValidAudience            = authConfig.Audience;
                options.TokenValidationParameters.IssuerSigningKey         = key;
                options.TokenValidationParameters.ValidateIssuerSigningKey = true;
                options.TokenValidationParameters.ValidateLifetime         = true;
                options.TokenValidationParameters.ClockSkew = TimeSpan.Zero;
            });

            return(services.AddAuthorization());
        }