Beispiel #1
0
        private async Task <string> GetAuthToken()
        {
            IConfidentialClientApplication application = ConfidentialClientApplicationBuilder.Create(_tenantConfiguration.ActiveDirectoryApplicationId)
                                                         .WithAuthority(AzureCloudInstance.AzurePublic, _tenantConfiguration.ActiveDirectoryTenantId)
                                                         .WithClientSecret(_tenantConfiguration.ActiveDirectoryApplicationSecret)
                                                         .Build();

            string[] scopes = new string[] { "https://management.azure.com/.default" };

            AcquireTokenForClientParameterBuilder result = application.AcquireTokenForClient(scopes);
            AuthenticationResult authenticationResult    = await result.ExecuteAsync();

            return(authenticationResult.AccessToken);
        }
        /// <summary>
        /// Binds the token to a key in the cache. L2 cache keys contain the key id.
        /// No cryptographic operations is performed on the token.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="keyId">A key id to which the access token is associated. The token will not be retrieved from the cache unless the same key id is presented. Can be null.</param>
        /// <returns>the builder</returns>
        public static AcquireTokenForClientParameterBuilder WithProofOfPosessionKeyId(
            this AcquireTokenForClientParameterBuilder builder,
            string keyId)
        {
            if (string.IsNullOrEmpty(keyId))
            {
                throw new ArgumentNullException(nameof(keyId));
            }

            builder.ValidateUseOfExperimentalFeature();
            builder.CommonParameters.AuthenticationScheme = new ExternalBoundTokenScheme(keyId);

            return(builder);
        }
Beispiel #3
0
        /// <summary>
        /// Authenticates with the partner service.
        /// </summary>
        /// <param name="requestContext">An optional request context.</param>
        /// <returns>An instance of <see cref="Task" /> that represents the asynchronous operation.</returns>
        public override async Task AuthenticateAsync(IRequestContext requestContext = null)
        {
            IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(ApplicationId)
                                                 .WithAuthority($"{activeDirectoryAuthority}/{aadApplicationDomain}")
                                                 .WithClientSecret(applicationSecret)
                                                 .WithTenantId(aadApplicationDomain)
                                                 .Build();

            AcquireTokenForClientParameterBuilder builder = app.AcquireTokenForClient(
                new string[] { $"{graphApiEndpoint}/.default" });

            AuthenticationResult authResult = await builder.ExecuteAsync().ConfigureAwait(false);

            AADToken = new AuthenticationToken(authResult.AccessToken, authResult.ExpiresOn);
        }
Beispiel #4
0
        public async Task <string> GetAuthToken()
        {
            if (Mode == RecordedTestMode.Playback)
            {
                return("auth token");
            }

            IConfidentialClientApplication application = ConfidentialClientApplicationBuilder.Create(TestConfigOAuth.ActiveDirectoryApplicationId)
                                                         .WithAuthority(AzureCloudInstance.AzurePublic, TestConfigOAuth.ActiveDirectoryTenantId)
                                                         .WithClientSecret(TestConfigOAuth.ActiveDirectoryApplicationSecret)
                                                         .Build();

            string[] scopes = new string[] { "https://storage.azure.com/.default" };

            AcquireTokenForClientParameterBuilder result = application.AcquireTokenForClient(scopes);
            AuthenticationResult authenticationResult    = await result.ExecuteAsync();

            return(authenticationResult.AccessToken);
        }
        public void GlobalSetup()
        {
            var cca = ConfidentialClientApplicationBuilder
                      .Create(TestConstants.ClientId)
                      .WithAuthority(new Uri(TestConstants.AuthorityTestTenant))
                      .WithRedirectUri(TestConstants.RedirectUri)
                      .WithClientSecret(TestConstants.ClientSecret)
                      .BuildConcrete();

            var inMemoryTokenCache = new InMemoryTokenCache();

            inMemoryTokenCache.Bind(cca.AppTokenCache);

            TokenCacheHelper tokenCacheHelper = new TokenCacheHelper();

            tokenCacheHelper.PopulateCacheForClientCredential(cca.AppTokenCacheInternal.Accessor, TokenCacheSize);

            _acquireTokenForClientBuilder = cca
                                            .AcquireTokenForClient(TestConstants.s_scope)
                                            .WithForceRefresh(false);
        }
Beispiel #6
0
        public static AcquireTokenForClientParameterBuilder WithPoPSignedRequest(
            this AcquireTokenForClientParameterBuilder builder,
            SigningCredentials popCredentials) // TODO: this only supports RSA for now
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (popCredentials is null)
            {
                throw new ArgumentNullException(nameof(popCredentials));
            }

            var popAuthenticationConfiguration
                = new PoPAuthenticationConfiguration()
                {
                SignHttpRequest   = false,
                PopCryptoProvider = new SigningCredentialsToPopCryptoProviderAdapter(popCredentials, assertNotSigned: true)
                };

            return(builder.WithProofOfPossession(popAuthenticationConfiguration));
        }
 public ThreadWork(int id, AcquireTokenForClientParameterBuilder acquireTokenBuilder, int durationInSeconds)
 {
     Id = id;
     AcquireTokenBuilder = acquireTokenBuilder;
     EndTime             = DateTimeOffset.UtcNow.AddSeconds(durationInSeconds);
 }