コード例 #1
0
        public void VerifyCorrectAuthorityUsedInTokenAcquisition_B2CAuthorityTests(
            string authorityInstance,
            bool withTfp = false)
        {
            _microsoftIdentityOptionsMonitor = new TestOptionsMonitor <MicrosoftIdentityOptions>(new MicrosoftIdentityOptions
            {
                SignUpSignInPolicyId = TestConstants.B2CSignUpSignInUserFlow,
                Domain = TestConstants.B2CTenant,
            });

            if (withTfp)
            {
                _applicationOptionsMonitor = new TestOptionsMonitor <ConfidentialClientApplicationOptions>(new ConfidentialClientApplicationOptions
                {
                    Instance     = authorityInstance + "/tfp/",
                    ClientId     = TestConstants.ConfidentialClientId,
                    ClientSecret = TestConstants.ClientSecret,
                });
                BuildTheRequiredServices();
            }
            else
            {
                _applicationOptionsMonitor = new TestOptionsMonitor <ConfidentialClientApplicationOptions>(new ConfidentialClientApplicationOptions
                {
                    Instance     = authorityInstance,
                    ClientId     = TestConstants.ConfidentialClientId,
                    ClientSecret = TestConstants.ClientSecret,
                });

                BuildTheRequiredServices();
            }

            MergedOptions mergedOptions = _provider.GetRequiredService <IOptionsMonitor <MergedOptions> >().Get(OpenIdConnectDefaults.AuthenticationScheme);

            MergedOptions.UpdateMergedOptionsFromMicrosoftIdentityOptions(_microsoftIdentityOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);
            MergedOptions.UpdateMergedOptionsFromConfidentialClientApplicationOptions(_applicationOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);

            InitializeTokenAcquisitionObjects();

            IConfidentialClientApplication app = _tokenAcquisition.GetOrBuildConfidentialClientApplication(mergedOptions);

            string expectedAuthority = string.Format(
                CultureInfo.InvariantCulture,
                "{0}/tfp/{1}/{2}/",
                authorityInstance,
                TestConstants.B2CTenant,
                TestConstants.B2CSignUpSignInUserFlow);

            Assert.Equal(expectedAuthority, app.Authority);
        }
コード例 #2
0
        public void ValidateRequiredMicrosoftIdentityOptions(
            string clientId,
            string instance,
            string tenantid,
            string signUpSignInPolicyId,
            string domain,
            string optionsName,
            MissingParam missingParam = MissingParam.None)
        {
            if (optionsName == AzureAdB2C)
            {
                _microsoftIdentityOptionsMonitor = new TestOptionsMonitor <MicrosoftIdentityOptions>(new MicrosoftIdentityOptions
                {
                    SignUpSignInPolicyId = signUpSignInPolicyId,
                    Domain   = domain,
                    ClientId = clientId,
                    Instance = instance,
                    TenantId = tenantid,
                });
            }
            else
            {
                _microsoftIdentityOptionsMonitor = new TestOptionsMonitor <MicrosoftIdentityOptions>(new MicrosoftIdentityOptions
                {
                    ClientId = clientId,
                    Instance = instance,
                    TenantId = tenantid,
                });
            }

            BuildTheRequiredServices();
            MergedOptions mergedOptions = _provider.GetRequiredService <IOptionsMonitor <MergedOptions> >().Get(OpenIdConnectDefaults.AuthenticationScheme);

            MergedOptions.UpdateMergedOptionsFromMicrosoftIdentityOptions(_microsoftIdentityOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);

            if (missingParam != MissingParam.None)
            {
                var exception = Assert.Throws <ArgumentNullException>(() => MergedOptionsValidation.Validate(mergedOptions));

                CheckReturnValueAgainstExpectedMissingParam(missingParam, exception);
            }
            else
            {
                MergedOptionsValidation.Validate(mergedOptions);
            }
        }
        private void InitializeTokenAcquisitionObjects()
        {
            MergedOptions mergedOptions = _provider.GetRequiredService <IOptionsMonitor <MergedOptions> >().Get(OpenIdConnectDefaults.AuthenticationScheme);

            MergedOptions.UpdateMergedOptionsFromMicrosoftIdentityOptions(_microsoftIdentityOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);
            MergedOptions.UpdateMergedOptionsFromConfidentialClientApplicationOptions(_applicationOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);

            _msalTestTokenCacheProvider = new MsalTestTokenCacheProvider(
                _provider.GetService <IMemoryCache>(),
                _provider.GetService <IOptions <MsalMemoryTokenCacheOptions> >());

            _tokenAcquisition = new TokenAcquisition(
                _msalTestTokenCacheProvider,
                MockHttpContextAccessor.CreateMockHttpContextAccessor(),
                _provider.GetService <IOptionsMonitor <MergedOptions> >(),
                _provider.GetService <IHttpClientFactory>(),
                _provider.GetService <ILogger <TokenAcquisition> >(),
                _provider);
            _tokenAcquisition.GetOptions(OpenIdConnectDefaults.AuthenticationScheme, out string effectiveAuthenticationScheme);
            Assert.Equal(OpenIdConnectDefaults.AuthenticationScheme, effectiveAuthenticationScheme);
        }
コード例 #4
0
        public void VerifyCorrectRedirectUriAsync(
            string redirectUri)
        {
            _microsoftIdentityOptionsMonitor = new TestOptionsMonitor <MicrosoftIdentityOptions>(new MicrosoftIdentityOptions
            {
                Authority    = TestConstants.AuthorityCommonTenant,
                ClientId     = TestConstants.ConfidentialClientId,
                CallbackPath = string.Empty,
            });

            _applicationOptionsMonitor = new TestOptionsMonitor <ConfidentialClientApplicationOptions>(new ConfidentialClientApplicationOptions
            {
                Instance     = TestConstants.AadInstance,
                RedirectUri  = redirectUri,
                ClientSecret = TestConstants.ClientSecret,
            });

            BuildTheRequiredServices();
            MergedOptions mergedOptions = _provider.GetRequiredService <IOptionsMonitor <MergedOptions> >().Get(OpenIdConnectDefaults.AuthenticationScheme);

            MergedOptions.UpdateMergedOptionsFromMicrosoftIdentityOptions(_microsoftIdentityOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);
            MergedOptions.UpdateMergedOptionsFromConfidentialClientApplicationOptions(_applicationOptionsMonitor.Get(OpenIdConnectDefaults.AuthenticationScheme), mergedOptions);

            InitializeTokenAcquisitionObjects();

            IConfidentialClientApplication app = _tokenAcquisition.GetOrBuildConfidentialClientApplication(mergedOptions);

            if (!string.IsNullOrEmpty(redirectUri))
            {
                Assert.Equal(redirectUri, app.AppConfig.RedirectUri);
            }
            else
            {
                Assert.Equal("https://IdentityDotNetSDKAutomation/", app.AppConfig.RedirectUri);
            }
        }