public async Task <JwtToken> GenerateTokenAsync(IResourceOwnerPasswordCredentialsTokenRequest request) { await ValidateRequestAsync(request); var jwtToken = await CreateJwtTokenAsync(); var accessToken = jwtToken.ToAccessToken(); _accessTokenRepository.Add(accessToken); await _accessTokenRepository.SaveAsync(); return(jwtToken); }
private async Task ValidateRequestAsync(IResourceOwnerPasswordCredentialsTokenRequest request) { _request = request; if (_request.ClientId == Guid.Empty || _request.ClientSecret == null) { throw new InvalidClientException("Invalid client credentials."); } if (_request.Username == null || _request.Password == null) { throw new InvalidGrantException("Invalid resource owner credentials."); } _user = await _authenticateUserService.AuthenticateAsync(request.Username, request.Password); _application = await _authenticateClientService.AuthenticateAsync(request.ClientId, request.ClientSecret); }