コード例 #1
0
 public AccountController(IGameService gameService,
                          UserManager <IdentityUser> userManager,
                          SignInManager <IdentityUser> signInManager,
                          IOptions <JwtSettingsOptions> options)
 {
     _gameService   = gameService;
     _userManager   = userManager;
     _signInManager = signInManager;
     _jwtSettings   = options.Value;
 }
コード例 #2
0
ファイル: Startup.cs プロジェクト: KvashaMihail/BlackJackASP
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddDbContext <UsersContext>(options =>
                                                 options.UseSqlServer(
                                                     Configuration.GetConnectionString("IdentityConnection")));
            services.AddMvc();
            services.AddDefaultIdentity <IdentityUser>(
                options =>
                options.Password = new PasswordOptions
            {
                RequireDigit           = false,
                RequiredLength         = 6,
                RequireLowercase       = true,
                RequireUppercase       = false,
                RequireNonAlphanumeric = false
            })
            .AddEntityFrameworkStores <UsersContext>().
            AddDefaultTokenProviders();

            IConfigurationSection settingsSection = Configuration.GetSection("JwtSettings");

            services.Configure <JwtSettingsOptions>(settingsSection);

            JwtSettingsOptions jwtOptions = settingsSection.Get <JwtSettingsOptions>();

            byte[] key = Encoding.ASCII.GetBytes(jwtOptions.TokenSecret);
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.SaveToken                 = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(key),
                    ValidateIssuer           = false,
                    ValidateAudience         = false
                };
            });

            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/dist";
            });
            services.AddServicesFromBL(Configuration);
        }
コード例 #3
0
        public static IServiceCollection AddBlackJackJwtIdentity(this IServiceCollection services, IConfiguration configuration)
        {
            IConfigurationSection settingsSection = configuration.GetSection("JwtSettings");

            services.Configure <JwtSettingsOptions>(settingsSection);
            JwtSettingsOptions jwtOptions = settingsSection.Get <JwtSettingsOptions>();

            byte[] key = Encoding.ASCII.GetBytes(jwtOptions.TokenSecret);
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.SaveToken                 = true;
                options.ClaimsIssuer              = jwtOptions.Issuer;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = false,
                    ValidIssuer              = jwtOptions.Issuer,
                    ValidAudience            = jwtOptions.Audience,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(key),
                    ValidateLifetime         = true,
                    ValidateAudience         = false
                };
            });

            services.AddDbContext <UserDbContext>();
            services.AddIdentity <IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores <UserDbContext>();

            return(services);
        }
コード例 #4
0
        public void InstallServices(IServiceCollection services, IConfiguration configuration)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            var jwtOptions = new JwtSettingsOptions();

            configuration.GetSection(nameof(JwtSettingsOptions)).Bind(jwtOptions);
            services.AddSingleton(jwtOptions);



            var tokenParameters = new TokenValidationParameters()
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = new SymmetricSecurityKey(System.Text.Encoding.ASCII.GetBytes(jwtOptions.Secret)),
                ValidateIssuer           = false,
                ValidateAudience         = false,
                RequireExpirationTime    = false,
                ValidateLifetime         = true
            };

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(x =>
            {
                x.SaveToken = true;
                x.TokenValidationParameters = tokenParameters;
            });

            // services.AddAuthorization(options=>
            // {
            //     options.AddPolicy("PolicyClaimViewer",builder =>{
            //         builder.RequireClaim("policiesclaim.view","true");
            //     });
            // });

            services.AddSwaggerGen(x =>
            {
                x.SwaggerDoc("v1", new OpenApiInfo()
                {
                    Title = "TweetBook API", Version = "v1"
                });
                x.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = "JWT Authorization header using the Bearer Schema",
                    Name        = "Authorization",
                    In          = ParameterLocation.Header,
                    Type        = SecuritySchemeType.ApiKey
                });
                x.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Bearer"
                            }
                        }, new List <string>()
                    }
                });
            });

            services.AddScoped <IIdentityService, IdentityService>();
            services.AddScoped <IPostService, PostService>();
        }
コード例 #5
0
 public IdentityService(UserManager <IdentityUser> userManager, JwtSettingsOptions jwtOptions, RoleManager <IdentityRole> roleManager)
 {
     _userManager = userManager;
     _jwtOptions  = jwtOptions;
     _roleManager = roleManager;
 }
コード例 #6
0
        public static IServiceCollection AddAuthentication(this IServiceCollection services, JwtSettingsOptions option)
        {
            services.AddSingleton <IJwtTokenHandler, JwtTokenHandler>();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, configureOptions =>
            {
                configureOptions.TokenValidationParameters = new TokenValidationParameters()
                {
                    // 验证签发方密钥
                    ValidateIssuerSigningKey = option.ValidateIssuerSigningKey.Value,
                    // 签发方密钥
                    IssuerSigningKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(option.IssuerSigningKey)),
                    // 验证签发方
                    ValidateIssuer = option.ValidateIssuer.Value,
                    // 设置签发方
                    ValidIssuer = option.ValidIssuer,
                    // 验证签收方
                    ValidateAudience = option.ValidateAudience.Value,
                    // 设置接收方
                    ValidAudience = option.ValidAudience,
                    // 验证生存期
                    ValidateLifetime = option.ValidateLifetime.Value,
                    // 过期时间容错值
                    ClockSkew = TimeSpan.FromSeconds(option.ClockSkew.Value),
                };
                configureOptions.SaveToken = true;
            });

            return(services);
        }
コード例 #7
0
 public AuthenticationController(IAuthenticationService authenticationService,
                                 IOptions <JwtSettingsOptions> options)
 {
     _authenticationService = authenticationService;
     _jwtSettings           = options.Value;
 }
コード例 #8
0
ファイル: UserController.cs プロジェクト: rist0/iqtest
 public UserController(IUnitOfWork unitOfWork, IOptions <JwtSettingsOptions> jwtSettingsOptions)
 {
     _unitOfWork  = unitOfWork;
     _jwtSettings = jwtSettingsOptions.Value;
 }