示例#1
0
        public async Task <AccessTokenDTO> SignIn(SignInCredentialsDTO dto)
        {
            var result = await GenerateAccessToken(dto.Username, dto.Password);

            var res = _httpContext.HttpContext.Response;

            res.Headers.Append("Set-Cookie", result.AccessTokenSourceCookie);
            res.Headers.Append("Set-Cookie", result.RefreshTokenSourceCookie);

            return(result);
        }
示例#2
0
        public Task <AccessTokenDTO> SignIn(SignInCredentialsDTO dto)
        {
            var isUser  = dto.Username == "user" && dto.Password == "pass";
            var isAdmin = dto.Username == "admin" && dto.Password == "pass";

            if (!isUser && !isAdmin)
            {
                throw new ApiSecurityException(ApiSecurityErrors.AuthenticationError);
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.Upn, dto.Username),
                new Claim("name", isUser ? "System User" : "System Administrator"),
                new Claim("display_name", isUser ? "System User" : "System Administrator"),
                new Claim(ClaimTypes.Email, isUser ? "*****@*****.**" : "*****@*****.**"),
                new Claim("photo", "https://static.wixstatic.com/media/a2d517_b155553cfec248378a8b6d73c7c17d5e~mv2.png/v1/fill/w_573,h_469/Focus%20bc%20favicon.png"),
                new Claim(ClaimTypes.Role, isUser ? "Users" : "Admins"),
            };

            // Generates the Token
            var securityKey        = new SymmetricSecurityKey(Encoding.Default.GetBytes(_settings.Secret));
            var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
            var tokenHandler       = new JwtSecurityTokenHandler();
            var tokenDescription   = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Issuer             = _settings.Issuer,
                Audience           = _settings.Issuer,
                Expires            = DateTime.Now.AddSeconds(_settings.Expiration * 3600),
                IssuedAt           = DateTime.Now,
                SigningCredentials = signingCredentials
            };

            var securityToken = tokenHandler.CreateToken(tokenDescription);
            var accessToken   = tokenHandler.WriteToken(securityToken);

            // Write a cookie with the access token
            var options = new CookieOptions();

            options.Expires  = DateTimeOffset.Now.AddHours(_settings.Expiration);
            options.HttpOnly = true;
            _httpContext.Response.Cookies.Append("Authorization", accessToken, options);

            return(Task.FromResult(new AccessTokenDTO()
            {
                AccessToken = accessToken
            }));
        }