AW-3569 Added posibility to login with username/password
This commit is contained in:
		| @@ -53,9 +53,16 @@ namespace FarmmapsApi.Services | ||||
|                 throw new AuthenticationException("Already seems to be authenticated"); | ||||
|  | ||||
|             var disco = await _openIdConnectService.GetDiscoveryDocumentAsync(); | ||||
|             var token = await _openIdConnectService.GetTokenClientCredentialsAsync(disco.TokenEndpoint, | ||||
|                 _configuration.ClientId, _configuration.ClientSecret); | ||||
|  | ||||
|             var usePasswordGrant = string.IsNullOrEmpty(_configuration.ClientId) || | ||||
|                                    string.IsNullOrEmpty(_configuration.ClientSecret); | ||||
|              | ||||
|             var token = usePasswordGrant ?  | ||||
|                 await _openIdConnectService.GetTokenUsernamePasswordAsync(disco.TokenEndpoint, | ||||
|                         _configuration.GrantClientId, _configuration.Username, _configuration.Password) : | ||||
|                 await _openIdConnectService.GetTokenClientCredentialsAsync(disco.TokenEndpoint, | ||||
|                 _configuration.ClientId, _configuration.ClientSecret); | ||||
|              | ||||
|             if (token.IsError) | ||||
|                 throw new AuthenticationException(token.Error); | ||||
|  | ||||
| @@ -314,7 +321,6 @@ namespace FarmmapsApi.Services | ||||
|             farmmapsUploader.UploadSessionData += data => location = data.UploadUri; | ||||
|  | ||||
|             var progress = await farmmapsUploader.UploadAsync(); | ||||
|  | ||||
|             return new UploadResults(progress, location); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
| using System.Net.Http; | ||||
| using System.Threading.Tasks; | ||||
| using FarmmapsApi.Models; | ||||
| using IdentityModel; | ||||
| using IdentityModel.Client; | ||||
|  | ||||
| namespace FarmmapsApi.Services | ||||
| @@ -40,6 +41,19 @@ namespace FarmmapsApi.Services | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         public async Task<TokenResponse> GetTokenUsernamePasswordAsync(string tokenEndpointUrl, string grantClientId, string username, string password) | ||||
|         { | ||||
|             return await _httpClient.RequestPasswordTokenAsync(new PasswordTokenRequest() | ||||
|             { | ||||
|                 Address = tokenEndpointUrl, | ||||
|                 UserName = username, | ||||
|                 Password = password, | ||||
|                 ClientId = grantClientId, | ||||
|                 GrantType = OidcConstants.GrantTypes.Password, | ||||
|                 Scope = string.Join(" ", _configuration.Scopes) | ||||
|             }); | ||||
|         } | ||||
|          | ||||
|         public async Task<TokenResponse> RefreshTokensAsync(string tokenEndpointUrl, string refreshToken) | ||||
|         { | ||||
|             return await _httpClient.RequestRefreshTokenAsync(new RefreshTokenRequest() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user