public async Task <JwtToken> GenerateTokenAsync(IClientCredentialsTokenRequest request) { await ValidateRequestAsync(request); var jwtToken = await CreateJwtTokenAsync(); var accessToken = jwtToken.ToAccessToken(); _accessTokenRepository.Add(accessToken); await _accessTokenRepository.SaveAsync(); return(jwtToken); }
private async Task ValidateRequestAsync(IClientCredentialsTokenRequest request) { _request = request; if (_request.ClientId == Guid.Empty || _request.ClientSecret == null) { throw new InvalidClientException("Invalid client credentials."); } _application = await _authenticateClientService.AuthenticateAsync(_request.ClientId, _request.ClientSecret); if (_application.Type == ClientTypes.Public) { throw new UnauthorizedClientException("Public clients cannot use the client credentials grant."); } }