Пример #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            #region services setup
            KeyVaultService.Create(Environment.GetEnvironmentVariable("VaultUri"));
            EmailService.Create(KeyVaultService.GetSecretByName("SMTP--PASS"));
            PaymentService.Create(KeyVaultService.GetSecretByName("PayU"));
            BlobStorageService.Create(KeyVaultService.GetSecretByName("ConnectionStrings--BlobSotrage"));
            InputManager.Create(KeyVaultService.GetSecretByName("PBKDF2--params"));
            #endregion

            services.AddControllersWithViews();

            services.AddDbContext <DatabaseContext>(options =>
                                                    options.UseLazyLoadingProxies().UseSqlServer(KeyVaultService.GetSecretByName("ConnectionStrings--justlearnitdb")));

            services.AddSession();
            services.AddDistributedMemoryCache();
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(KeyVaultService.GetSecretByName("JWT--Key")));

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(opt =>
            {
                opt.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,
                    ValidateAudience         = false,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer      = "INO",
                    IssuerSigningKey = symmetricKey
                };
            });

            services.AddAuthorization();
        }
Пример #2
0
        public static Task <JwtSecurityToken> AssignToken(UserModel user)
        {
            SymmetricSecurityKey symmetricKey       = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(KeyVaultService.GetSecretByName("JWT--Key")));
            SigningCredentials   signingCredentials = new SigningCredentials(symmetricKey, SecurityAlgorithms.HmacSha256Signature);

            List <Claim> claims = new List <Claim>();

            switch (user.Role)
            {
            case Role.USER:
                claims.Add(new Claim(ClaimTypes.Role, Enum.GetName(typeof(Role), Role.USER)));
                break;

            case Role.ADMIN:
                claims.Add(new Claim(ClaimTypes.Role, Enum.GetName(typeof(Role), Role.ADMIN)));
                break;
            }

            var token = new JwtSecurityToken(
                issuer: "INO",
                audience: user.Id,
                expires: DateTime.Now.AddMinutes(180),
                signingCredentials: signingCredentials,
                claims: claims
                );

            return(Task.FromResult(token));
        }