示例#1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            //load Multifactor settings
            var multifactorSection = Configuration.GetSection("Multifactor");
            var apiKey             = multifactorSection["ApiKey"];
            var apiSecret          = multifactorSection["ApiSecret"];
            var callbackUrl        = multifactorSection["CallbackUrl"];

            //register Multifactor service
            var multifactorService = new MultifactorService(apiKey, apiSecret, callbackUrl);

            services.AddSingleton(multifactorService);

            //register identity service
            services.AddSingleton <IdentityService>();

            //add Jwt Bearer authentication
            services
            .AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata      = true;
                x.SaveToken                 = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(apiSecret)), //signature validation key
                    ValidateIssuer           = true,
                    ValidIssuer      = "https://access.multifactor.ru",                                      //only valid token issuer
                    ValidateAudience = true,
                    ValidAudience    = apiKey,
                    NameClaimType    = ClaimTypes.NameIdentifier  //claim where take Authorized User Identity Name
                };
            });
        }
 public AccountController(IdentityService identityService, MultifactorService multifactorService)
 {
     _identityService    = identityService ?? throw new ArgumentNullException(nameof(identityService));
     _multifactorService = multifactorService ?? throw new ArgumentNullException(nameof(multifactorService));
 }