Пример #1
0
        protected override async Task <AuthenticateResult> HandleAuthenticateAsync()
        {
            if (!Request.Headers.ContainsKey("Authorization"))

            {
                return(AuthenticateResult.Fail("Missing authorization header!!"));
            }

            var authHeader       = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
            var credentialsBytes = Convert.FromBase64String(authHeader.Parameter);
            var credentials      = Encoding.UTF8.GetString(credentialsBytes).Split(":");

            if (credentials.Length != 2)
            {
                return(AuthenticateResult.Fail("Fail authorization header value"));
            }

            bool validation = _service.validation(credentials[0], credentials[1]);

            if (validation == false)

            {
                return(AuthenticateResult.Fail("Incorrect username or password."));
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, "1"),

                new Claim(ClaimTypes.Name, credentials[0]),

                new Claim(ClaimTypes.Role, "admin"),

                new Claim(ClaimTypes.Role, "employee")
            };



            var identity = new ClaimsIdentity(claims, Scheme.Name);

            var principal = new ClaimsPrincipal(identity);

            var ticket = new AuthenticationTicket(principal, Scheme.Name);


            return(AuthenticateResult.Success(ticket));
        }