public ApiResponse <Token> GetAccessToken <T>(T credentials) where T : IOAuthCredentials { ClientCredentials credentials1 = (object)credentials as ClientCredentials; if (credentials1 != null) { return(this.GetAccessToken(credentials1)); } PasswordCredentials credentials2 = (object)credentials as PasswordCredentials; if (credentials2 != null) { return(this.GetAccessToken(credentials2)); } AuthorizationCodeCredentials credentials3 = (object)credentials as AuthorizationCodeCredentials; if (credentials3 != null) { return(this.GetAccessToken(credentials3)); } RefreshTokenCredentials credentials4 = (object)credentials as RefreshTokenCredentials; if (credentials4 != null) { return(this.GetAccessToken(credentials4)); } throw new AuthenticationException("Unsupported credential type"); }
public async Task <ApiResponse <Token> > GetAccessTokenAsync <T>(T credentials, CancellationToken cancellationToken = default(CancellationToken)) where T : IOAuthCredentials { ClientCredentials credentials1 = (object)(T)credentials as ClientCredentials; if (credentials1 != null) { return(await this.GetAccessTokenAsync(credentials1, cancellationToken)); } PasswordCredentials credentials2 = (object)(T)credentials as PasswordCredentials; if (credentials2 != null) { return(await this.GetAccessTokenAsync(credentials2, cancellationToken)); } AuthorizationCodeCredentials credentials3 = (object)(T)credentials as AuthorizationCodeCredentials; if (credentials3 != null) { return(await this.GetAccessTokenAsync(credentials3, cancellationToken)); } RefreshTokenCredentials credentials4 = (object)(T)credentials as RefreshTokenCredentials; if (credentials4 != null) { return(await this.GetAccessTokenAsync(credentials4, cancellationToken)); } throw new AuthenticationException("Unsupported credential type"); }
public async Task <Token> RefreshToken(RefreshTokenCredentials refreshTokenCredentials) { var unauthorizedException = new UnauthorizedAccessException("Unauthorized token refresh action"); var userRefreshToken = context.RefreshToken.SingleOrDefault(t => t.Token == refreshTokenCredentials.Token && t.UserId == refreshTokenCredentials.UserId); if (userRefreshToken == null) { throw unauthorizedException; } var tokenManager = new JwtSecurityTokenHandler(); var token = tokenManager.ReadJwtToken(refreshTokenCredentials.Token); var tokenUserGuid = token.Claims.Where(c => c.Type == "UserId").Select(c => c.Value).FirstOrDefault(); if (tokenUserGuid == null || tokenUserGuid != refreshTokenCredentials.UserId.ToString()) { throw unauthorizedException; } var user = await userManager.FindByIdAsync(refreshTokenCredentials.UserId.ToString()); if (user == null) { throw unauthorizedException; } return(GenerateUserToken(user)); }
public ApiResponse <Token> GetAccessToken(RefreshTokenCredentials credentials) { return(this.GetAccessToken((IDictionary <string, string>) new Dictionary <string, string>() { { "refresh_token", credentials.RefreshToken }, { "grant_type", credentials.GrantType } }, string.Format("bearer {0}", (object)credentials.AccessToken))); }
public async Task <ApiResponse <Token> > GetAccessTokenAsync(RefreshTokenCredentials credentials, CancellationToken cancellationToken = default(CancellationToken)) { return(await this.GetAccessTokenAsync((IDictionary <string, string>) new Dictionary <string, string>() { { "refresh_token", credentials.RefreshToken }, { "grant_type", credentials.GrantType } }, credentials.AccessToken, cancellationToken)); }
public async Task <IActionResult> RefreshToken([FromBody] RefreshTokenCredentials refreshTokenCredentials) { var token = await authService.RefreshToken(refreshTokenCredentials); return(Ok(token)); }