AW-3569 Added posibility to login with username/password
This commit is contained in:
		| @@ -7,8 +7,11 @@ | ||||
|         public string BasePath { get; set; }  | ||||
|         public string DiscoveryEndpointUrl { get; set; }  | ||||
|         public string RedirectUri { get; set; }  | ||||
|         public string GrantClientId { get; set; }  | ||||
|         public string ClientId { get; set; }  | ||||
|         public string ClientSecret { get; set; } | ||||
|         public string Username { get; set; } | ||||
|         public string Password { get; set; } | ||||
|         public string[] Scopes { get; set; }  | ||||
|     } | ||||
| } | ||||
| @@ -53,7 +53,14 @@ namespace FarmmapsApi.Services | ||||
|                 throw new AuthenticationException("Already seems to be authenticated"); | ||||
|  | ||||
|             var disco = await _openIdConnectService.GetDiscoveryDocumentAsync(); | ||||
|             var token = await _openIdConnectService.GetTokenClientCredentialsAsync(disco.TokenEndpoint, | ||||
|  | ||||
|             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) | ||||
| @@ -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() | ||||
|   | ||||
| @@ -17,8 +17,5 @@ | ||||
|     <ItemGroup> | ||||
|         <ProjectReference Include="..\FarmmapsApi\FarmmapsApi.csproj" /> | ||||
|     </ItemGroup> | ||||
| 	<ItemGroup> | ||||
| 		<Folder Include="Data" /> | ||||
| 	</ItemGroup> | ||||
|  | ||||
| </Project> | ||||
|   | ||||
| @@ -1,23 +1,26 @@ | ||||
| { | ||||
|   //There are three farmmaps environments, uncomment the environemnt you want to use with this sample client | ||||
|  | ||||
|   ////test environment | ||||
|   //"Authority": "https://accounts.test.farmmaps.eu/", | ||||
|   //"Endpoint": "https://test.farmmaps.eu/", | ||||
|   //"BasePath": "api/v1", | ||||
|   //"DiscoveryEndpointUrl": "https://accounts.test.farmmaps.eu/.well-known/openid-configuration", | ||||
|   //test environment | ||||
| //  "Authority": "https://accounts.test.farmmaps.eu/", | ||||
| //  "Endpoint": "https://test.farmmaps.eu/", | ||||
| //  "BasePath": "api/v1", | ||||
| //  "DiscoveryEndpointUrl": "https://accounts.test.farmmaps.eu/.well-known/openid-configuration", | ||||
| //  "GrantClientId": "farmmapstesteu", | ||||
|  | ||||
|   ////acceptance environment | ||||
|   //"Authority": "https://accounts.acc.farmmaps.eu/", | ||||
|   //"Endpoint": "https://acc.farmmaps.eu/", | ||||
|   //"BasePath": "api/v1", | ||||
|   //"DiscoveryEndpointUrl": "https://accounts.acc.farmmaps.eu/.well-known/openid-configuration", | ||||
|   //"GrantClientId": "farmmapsacceu", | ||||
|  | ||||
|   //production environment | ||||
|   "authority": "https://accounts.farmmaps.eu/", | ||||
|   "endpoint": "https://farmmaps.eu/", | ||||
|   "basepath": "api/v1", | ||||
|   "discoveryendpointurl": "https://accounts.farmmaps.eu/.well-known/openid-configuration", | ||||
|   "GrantClientId": "farmmaps", | ||||
|  | ||||
|   //overige info | ||||
|   "RedirectUri": "http://example.nl/api", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user