Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        /// <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>());
        }
Beispiel #4
0
        /// <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;
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
 /// <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)
 { }
Beispiel #10
0
        /// <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);
            }
        }
Beispiel #11
0
 public TokenClient(string address, string clientId, string clientSecret, AuthenticationStyle style = AuthenticationStyle.BasicAuthentication)
     : this(address, clientId, clientSecret, new HttpClientHandler(), style)
 {
 }
Beispiel #12
0
 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)
 {
 }
Beispiel #15
0
 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"));
 }