public async Task <TokenResponse> GetTokenAuthorizationCode( string authCode, string redirectUri, AuthenticationStyle authenticationStyle = AuthenticationStyle.BasicAuthentication) { var uri = _config.OidcAuthority + "/oauth2/v1/token"; var tokenClient = new TokenClient( uri, _config.ClientId, _config.ClientSecret, authenticationStyle); _logger.WriteInformation($"Getting token from uri: '{uri}' " + $"redirectUri: '{redirectUri}' " + $" & authenticationStyle: '{authenticationStyle}'"); TokenResponse tokenResponse = await tokenClient.RequestAuthorizationCodeAsync( authCode, redirectUri); if (!tokenResponse.IsError) { return(tokenResponse); } _logger.WriteError(tokenResponse.Error); throw new InvalidOperationException(tokenResponse.Error); }
/// <summary> /// Creates the token client. /// </summary> /// <param name="innerHttpMessageHandler">The inner HTTP message handler.</param> /// <param name="authenticationStyle">The authentication style.</param> /// <returns>The token client.</returns> public async Task <TokenClient> CreateTokenClient( HttpMessageHandler innerHttpMessageHandler, AuthenticationStyle authenticationStyle) { var disco = await this.GetDiscovery(); return(new TokenClient(disco.TokenEndpoint, this.ClientId, this.ClientSecret, innerHttpMessageHandler, authenticationStyle)); }
/// <summary> /// Request token. /// </summary> /// <typeparam name="T">The type model.</typeparam> /// <param name="clientId">The client id.</param> /// <param name="clientSecret">The client secret.</param> /// <param name="style">The authentication style.</param> /// <param name="scopes">The scopes for this request.</param> /// <param name="additionalValues">Additional values.</param> /// <param name="cancellationToken">Async cancellation token.</param> /// <returns>The async task.</returns> public async Task <T> RequestToken <T>(string clientId, string clientSecret, AuthenticationStyle style, string[] scopes = null, Dictionary <string, string> additionalValues = null, CancellationToken cancellationToken = default(CancellationToken)) { var request = new OAuth2Client(new Uri(_baseAddress.TrimEnd('/') + "/" + _tokenEndpoint.Trim('/')), clientId, clientSecret, AuthenticationStyleHelper.GetAuthenticationStyle(style)); TokenResponse response = await request.RequestClientCredentialsAsync((scopes == null ? null : String.Join(" ", scopes)), additionalValues, cancellationToken); return(response.Json.ToObject <T>()); }
/// <summary> /// Constructor /// </summary> /// <param name="endpoint">endpoint</param> /// <param name="clientId">clientId</param> /// <param name="clientSecret">clientSecret</param> /// <param name="innerHttpMessageHandler">innerHttpMessageHandler</param> /// <param name="style"></param> public TokenClient(string endpoint, string clientId, string clientSecret, HttpMessageHandler innerHttpMessageHandler, AuthenticationStyle style = AuthenticationStyle.OAuth2) : this(endpoint, innerHttpMessageHandler) { if (string.IsNullOrEmpty(clientId)) { throw new ArgumentNullException(nameof(clientId)); } AuthenticationStyle = style; ClientId = clientId; ClientSecret = clientSecret; }
/// <summary> /// Initializes a new instance of the <see cref="TokenClient"/> class. /// </summary> /// <param name="address">The address.</param> /// <param name="clientId">The client identifier.</param> /// <param name="clientSecret">The client secret.</param> /// <param name="innerHttpMessageHandler">The inner HTTP message handler.</param> /// <param name="style">The authentication style.</param> /// <exception cref="System.ArgumentNullException">clientId</exception> public TokenClient(string address, string clientId, string clientSecret, HttpMessageHandler innerHttpMessageHandler = null, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : this(address, innerHttpMessageHandler) { if (clientId.IsMissing()) { throw new ArgumentNullException(nameof(clientId)); } AuthenticationStyle = style; ClientId = clientId; ClientSecret = clientSecret; }
public TokenClient(string address, string clientId, string clientSecret, HttpMessageHandler innerHttpMessageHandler, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : this(address, innerHttpMessageHandler) { if (string.IsNullOrEmpty(clientId)) throw new ArgumentNullException("ClientId"); AuthenticationStyle = style; ClientId = clientId; ClientSecret = clientSecret; if (style == AuthenticationStyle.BasicAuthentication) { _client.DefaultRequestHeaders.Authorization = new BasicAuthenticationHeaderValue(clientId, clientSecret); } }
public TokenClient(string address, string clientId, string clientSecret, HttpMessageHandler innerHttpMessageHandler, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : this(address, innerHttpMessageHandler) { if (string.IsNullOrEmpty(clientId)) { throw new ArgumentNullException(nameof(clientId)); } AuthenticationStyle = style; ClientId = clientId; ClientSecret = clientSecret; if (style == AuthenticationStyle.BasicAuthentication) { _client.DefaultRequestHeaders.Authorization = new BasicAuthenticationHeaderValue(clientId, clientSecret); } }
/// <summary> /// Constructor /// </summary> /// <param name="endpoint">endpoint</param> /// <param name="clientId">clientId</param> /// <param name="clientSecret">clientSecret</param> /// <param name="style">style</param> public TokenClient(string endpoint, string clientId, string clientSecret, AuthenticationStyle style = AuthenticationStyle.OAuth2) : this(endpoint, clientId, clientSecret, new HttpClientHandler(), style) { }
public TokenClient(string address, string clientId, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : this(address, clientId, string.Empty, new HttpClientHandler(), style) { }
/// <summary> /// Get Authentication Style. /// </summary> /// <param name="style">Client style.</param> /// <returns>The style.</returns> public static Thinktecture.IdentityModel.Client.OAuth2Client.ClientAuthenticationStyle GetAuthenticationStyle(AuthenticationStyle style) { switch (style) { case AuthenticationStyle.BasicAuthentication: return(Thinktecture.IdentityModel.Client.OAuth2Client.ClientAuthenticationStyle.BasicAuthentication); case AuthenticationStyle.PostValues: return(Thinktecture.IdentityModel.Client.OAuth2Client.ClientAuthenticationStyle.PostValues); case AuthenticationStyle.None: default: return(Thinktecture.IdentityModel.Client.OAuth2Client.ClientAuthenticationStyle.None); } }
public TokenClient(string address, string clientId, string clientSecret, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : this(address, clientId, clientSecret, new HttpClientHandler(), style) { }
public TokenClient(string address, string clientId, AuthenticationStyle style = AuthenticationStyle.PostValues) : this(address, clientId, string.Empty, new HttpClientHandler(), style) { }
/// <summary> /// Initializes a new instance of the <see cref="TokenClient" /> class. /// </summary> /// <param name="address">The address.</param> /// <param name="clientId">The client identifier.</param> /// <param name="style">The authentication style.</param> /// <param name="innerHttpMessageHandler">The inner HTTP message handler.</param> public TokenClient(string address, string clientId, HttpMessageHandler innerHttpMessageHandler = null, AuthenticationStyle style = AuthenticationStyle.PostValues) : this(address, clientId, string.Empty, style : style, innerHttpMessageHandler : innerHttpMessageHandler) { }
/// <summary> /// Initializes a new instance of the <see cref="TokenClient"/> class. /// </summary> /// <param name="address">The address.</param> /// <param name="clientId">The client identifier.</param> /// <param name="style">The authentication style.</param> public TokenClient(string address, string clientId, AuthenticationStyle style = AuthenticationStyle.PostValues) : this(address, clientId, string.Empty, style : style) { }
public LocalTokenClient(string address, string clientId, string clientSecret, ILocalTokenEndpointHandler endpointHandler, HttpMessageHandler innerHttpMessageHandler = null, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : base(address, clientId, clientSecret, innerHttpMessageHandler, style) { _endpointHandler = endpointHandler; }
public TestTokenClient(HttpClient client, string address, string clientId, string clientSecret, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication) : base(address, clientId, clientSecret, style) { _client = client; _client.BaseAddress = new Uri(address); _client.DefaultRequestHeaders.Authorization = new BasicAuthenticationHeaderValue(clientId, clientSecret); _client.DefaultRequestHeaders.Accept.Clear(); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); }