コード例 #1
0
        private string CodifyToken(ClaimsIdentity claimsIdentity)
        {
            var tokenHandler = new JwtSecurityTokenHandler();

            var currentIssuer = $"{_aspNetUser.GetHttpContext().Request.Scheme}://{_aspNetUser.GetHttpContext().Request.Host}";

            var key = _jwksService.GetCurrent();

            var token = tokenHandler.CreateToken(new SecurityTokenDescriptor
            {
                Issuer             = currentIssuer,
                Subject            = claimsIdentity,
                Expires            = DateTime.UtcNow.AddHours(1),
                SigningCredentials = key
            });

            return(tokenHandler.WriteToken(token));
        }
コード例 #2
0
        public async Task ConnectAccount(UserLoginTokenResponse userLoginTokenResponse)
        {
            var token = GetFormatedToken(userLoginTokenResponse.AccessToken);

            var claims = new List <Claim>();

            claims.Add(new Claim("JWT", userLoginTokenResponse.AccessToken));
            claims.Add(new Claim("RefreshToken", userLoginTokenResponse.RefreshToken));
            claims.AddRange(token.Claims);

            var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

            var authProperties = new AuthenticationProperties
            {
                ExpiresUtc   = DateTimeOffset.UtcNow.AddHours(8),
                IsPersistent = true
            };

            await _authenticationService.SignInAsync(
                _aspNetUser.GetHttpContext(),
                CookieAuthenticationDefaults.AuthenticationScheme,
                new ClaimsPrincipal(claimsIdentity),
                authProperties);
        }
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var authorizationHeader = _user.GetHttpContext().Request.Headers["Authorization"];

            if (!string.IsNullOrEmpty(authorizationHeader))
            {
                request.Headers.Add("Authorization", new List <string>()
                {
                    authorizationHeader
                });
            }
            var token = _user.GetUserToken();

            if (token != null)
            {
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
            }
            return(base.SendAsync(request, cancellationToken));
        }