コード例 #1
0
 internal DefaultAzureCredential(DefaultAzureCredentialFactory factory, DefaultAzureCredentialOptions options)
 {
     _pipeline       = factory.Pipeline;
     _sources        = GetDefaultAzureCredentialChain(factory, options);
     _credentialLock = new AsyncLockWithValue <TokenCredential>();
 }
コード例 #2
0
        internal DefaultAzureCredential(DefaultAzureCredentialFactory factory, DefaultAzureCredentialOptions options)
        {
            _pipeline = factory.Pipeline;

            _sources = GetDefaultAzureCredentialChain(factory, options);
        }
コード例 #3
0
 /// <summary>
 /// Creates an instance of the <see cref="DefaultAzureCredential"/> class.
 /// </summary>
 /// <param name="options">Options that configure the management of the requests sent to Azure Active Directory services, and determine which credentials are included in the <see cref="DefaultAzureCredential"/> authentication flow.</param>
 public DefaultAzureCredential(DefaultAzureCredentialOptions options)
     : this(new DefaultAzureCredentialFactory(options), options)
 {
 }
コード例 #4
0
 /// <summary>
 /// Creates an instance of the <see cref="DefaultAzureCredential"/> class.
 /// </summary>
 /// <param name="options">Options that configure the management of the requests sent to Azure Active Directory services, and determine which credentials are included in the <see cref="DefaultAzureCredential"/> authentication flow.</param>
 public DefaultAzureCredential(DefaultAzureCredentialOptions options)
     : this(new DefaultAzureCredentialFactory(CredentialPipeline.GetInstance(options)), options)
 {
 }
コード例 #5
0
        private static IExtendedTokenCredential[] GetDefaultAzureCredentialChain(DefaultAzureCredentialFactory factory, DefaultAzureCredentialOptions options)
        {
            if (options is null)
            {
                return(s_defaultCredentialChain);
            }

            int i = 0;

            IExtendedTokenCredential[] chain = new IExtendedTokenCredential[4];

            if (!options.ExcludeEnvironmentCredential)
            {
                chain[i++] = factory.CreateEnvironmentCredential();
            }

            if (!options.ExcludeManagedIdentityCredential)
            {
                chain[i++] = factory.CreateManagedIdentityCredential(options.ManagedIdentityClientId);
            }

            if (!options.ExcludeSharedTokenCacheCredential)
            {
                chain[i++] = factory.CreateSharedTokenCacheCredential(options.SharedTokenCacheTenantId, options.SharedTokenCacheUsername);
            }

            if (!options.ExcludeInteractiveBrowserCredential)
            {
                chain[i++] = factory.CreateInteractiveBrowserCredential(options.InteractiveBrowserTenantId);
            }

            if (i == 0)
            {
                throw new ArgumentException("At least one credential type must be included in the authentication flow.", nameof(options));
            }

            return(chain);
        }
コード例 #6
0
 /// <summary>
 /// Creates an instance of the <see cref="DefaultAzureCredential"/> class.
 /// </summary>
 /// <param name="options">Options that configure the management of the requests sent to Azure Active Directory services, and determine which credentials are included in the <see cref="DefaultAzureCredential"/> authentication flow.</param>
 public DefaultAzureCredential(DefaultAzureCredentialOptions options)
 // we call ValidateAuthoriyHostOption to validate that we have a valid authority host before constructing the DAC chain
 // if we don't validate this up front it will end up throwing an exception out of a static initializer which obscures the error.
     : this(new DefaultAzureCredentialFactory(ValidateAuthorityHostOption(options)), options)
 {
 }
コード例 #7
0
        private static ReadOnlyMemory <TokenCredential> GetDefaultAzureCredentialChain(DefaultAzureCredentialOptions options)
        {
            if (options is null)
            {
                return(s_defaultCredentialChain);
            }

            int i = 0;

            TokenCredential[] chain = new TokenCredential[5];

            if (!options.ExcludeEnvironmentCredential)
            {
                chain[i++] = new EnvironmentCredential(options);
            }

            if (!options.ExcludeManagedIdentityCredential)
            {
                chain[i++] = new ManagedIdentityCredential(options.ManagedIdentityClientId, options);
            }

            if (!options.ExcludeSharedTokenCacheCredential)
            {
                chain[i++] = new SharedTokenCacheCredential(options.SharedTokenCacheUsername);
            }

            if (!options.ExcludeInteractiveBrowserCredential)
            {
                chain[i++] = new InteractiveBrowserCredential(null, Constants.DeveloperSignOnClientId, options);
            }

            chain[i++] = new CredentialNotFoundGuard();

            return(new ReadOnlyMemory <TokenCredential>(chain, 0, i));
        }
コード例 #8
0
 /// <summary>
 /// Creates an instance of the DefaultAzureCredential class.
 /// </summary>
 /// <param name="options"></param>
 public DefaultAzureCredential(DefaultAzureCredentialOptions options)
     : base(GetDefaultAzureCredentialChain(options))
 {
 }