public async Task <GetPasswordAccessTokenResponse> GetPasswordAccessToken(GetPasswordAccessTokenRequest request) { var doc = await GetDiscoveryDocument(); var response = await _httpClient.RequestPasswordTokenAsync(new PasswordTokenRequest { Address = doc.TokenEndpoint, ClientId = _options.ClientId, ClientSecret = _options.ClientSecret, Scope = _options.Scope, UserName = request.UserName, Password = request.Password, }); if (response.IsError) { throw new AuthorizeFailedException(response.Error, response.Exception); } return(new GetPasswordAccessTokenResponse { AccessToken = response.AccessToken, Type = response.TokenType, ExpiresIn = response.ExpiresIn, RefreshToken = response.RefreshToken }); }
public async Task Authorization(string username, string password) { var request = new GetPasswordAccessTokenRequest { UserName = username, Password = password }; try { var client = _factory.Create(AuthorizationType.IdentityAuthentication); var response = await client.GetPasswordAccessToken(request); var @event = new IdentityAuthorizationSuccessEvent { AccessToken = response.AccessToken, RefreshToken = response.RefreshToken, Type = response.Type, ExpiresIn = response.ExpiresIn }; await _eventBus.Publish(@event, CancellationToken.None); } catch (Exception ex) { throw new InvalidAuthenticationExcption("无效身份信息"); } }