Exemple #1
0
        public async Task <TokenResponse> GetAccessTokenFromUsernamePasswordAsync(CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "password");

            queryParams.AddQueryPair("username", _authenticationParameters.UserName);
            queryParams.AddQueryPair("password", _authenticationParameters.Password);
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            return(await GetAccessTokenAsync(queryParams, cancellationToken));
        }
Exemple #2
0
        public async Task <TokenResponse> GetAccessTokenWithCertificateAsync(
            X509Certificate2 certificate,
            CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "client_credentials");

            queryParams.AddQueryPair("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer");
            queryParams.AddQueryPair("client_assertion", GetClientCertificateAssertionForAudience(certificate));
            AddScopeQueryParam(queryParams);
            AddClientIdQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            return(await GetAccessTokenAsync(queryParams, cancellationToken));
        }
Exemple #3
0
        public async Task <TokenResponse> GetAccessTokenFromSamlGrantAsync(
            SamlTokenInfo samlGrant,
            CancellationToken cancellationToken)
        {
            QueryParameterBuilder queryParams;

            switch (samlGrant.AssertionType)
            {
            case SamlAssertionType.SamlV1:
                queryParams = new QueryParameterBuilder(
                    "grant_type",
                    "urn:ietf:params:oauth:grant-type:saml1_1-bearer");
                break;

            case SamlAssertionType.SamlV2:
                queryParams = new QueryParameterBuilder("grant_type", "urn:ietf:params:oauth:grant-type:saml2-bearer");
                break;

            default:
                throw new InvalidOperationException(); // (MsalXmlException, MSAL_SAML_ENUM_UNKNOWN_VERSION);
            }

            queryParams.AddQueryPair("assertion", EncodingUtils.Base64RfcEncodePadded(samlGrant.Assertion));
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            IDictionary <string, string> headers = GetVersionHeaders();

            headers["ContentType"] = "application/x-www-form-urlencoded";

            return(await GetAccessTokenAsync(queryParams, cancellationToken));
        }
Exemple #4
0
        public async Task <TokenResponse> GetAccessTokenFromUsernamePasswordAsync(CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "password");

            queryParams.AddQueryPair("username", _authenticationParameters.UserName);
            queryParams.AddQueryPair("password", _authenticationParameters.Password);
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            var response = await _httpManager.PostAsync(
                _authenticationParameters.AuthorityUri.GetTokenEndpoint(),
                GetVersionHeaders(),
                queryParams.ToString(),
                cancellationToken).ConfigureAwait(false);

            return(TokenResponse.Create(response.ResponseData));
        }
Exemple #5
0
        public async Task <TokenResponse> GetAccessTokenFromSamlGrantAsync(
            SamlTokenInfo samlGrant,
            CancellationToken cancellationToken)
        {
            QueryParameterBuilder queryParams;

            switch (samlGrant.AssertionType)
            {
            case SamlAssertionType.SamlV1:
                queryParams = new QueryParameterBuilder(
                    "grant_type",
                    "urn:ietf:params:oauth:grant-type:saml1_1-bearer");
                break;

            case SamlAssertionType.SamlV2:
                queryParams = new QueryParameterBuilder("grant_type", "urn:ietf:params:oauth:grant-type:saml2-bearer");
                break;

            default:
                throw new InvalidOperationException(); // (MsalXmlException, MSAL_SAML_ENUM_UNKNOWN_VERSION);
            }

            queryParams.AddQueryPair("assertion", _authenticationParameters.UserName);
            queryParams.AddQueryPair("password", EncodingUtils.Base64RfcEncodePadded(samlGrant.Assertion));
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            IDictionary <string, string> headers = GetVersionHeaders();

            headers["Content-Type"] = "application/x-www-form-urlencoded";

            var response = await _httpManager.PostAsync(
                _authenticationParameters.AuthorityUri.GetTokenEndpoint(),
                headers,
                queryParams.ToString(),
                cancellationToken).ConfigureAwait(false);

            return(TokenResponse.Create(response.ResponseData));
        }
Exemple #6
0
        public async Task <TokenResponse> GetAccessTokenFromRefreshTokenAsync(
            string refreshToken,
            CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "refresh_token");

            queryParams.AddQueryPair("refresh_token", refreshToken);
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            return(await GetAccessTokenAsync(queryParams, cancellationToken));
        }
Exemple #7
0
        public async Task <TokenResponse> GetAccessTokenFromAuthCodeAsync(
            string authCode,
            CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "authorization_code");

            queryParams.AddQueryPair("code", authCode);
            AddRedirectUriQueryParam(queryParams);
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            return(await GetAccessTokenAsync(queryParams, cancellationToken));
        }
Exemple #8
0
        public async Task <TokenResponse> GetAccessTokenFromAuthCodeAsync(
            string authCode,
            CancellationToken cancellationToken)
        {
            var queryParams = new QueryParameterBuilder("grant_type", "authorization_code");

            queryParams.AddQueryPair("code", authCode);
            AddRedirectUriQueryParam(queryParams);
            AddClientIdQueryParam(queryParams);
            AddScopeQueryParam(queryParams);
            AddClientInfoQueryParam(queryParams);

            var response = await _httpManager.PostAsync(
                _authenticationParameters.AuthorityUri.GetTokenEndpoint(),
                GetVersionHeaders(),
                queryParams.ToString(),
                cancellationToken).ConfigureAwait(false);

            return(TokenResponse.Create(response.ResponseData));
        }
Exemple #9
0
 private void AddClientInfoQueryParam(QueryParameterBuilder builder)
 {
     builder.AddQueryPair("client_id", _authenticationParameters.ClientId);
 }
Exemple #10
0
 private void AddScopeQueryParam(QueryParameterBuilder builder)
 {
     builder.AddQueryPair("scope", ScopeUtils.Join(_authenticationParameters.RequestedScopes));
 }
Exemple #11
0
 private void AddClientIdQueryParam(QueryParameterBuilder builder)
 {
     builder.AddQueryPair("client_info", "1");
 }
Exemple #12
0
 private void AddRedirectUriQueryParam(QueryParameterBuilder builder)
 {
     builder.AddQueryPair("redirect_uri", _authenticationParameters.RedirectUri);
 }