forked from FarmMaps/FarmMapsApiClient
		
	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
 | 
			
		||||
  //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