示例#1
0
        public void SignInCommand_WithHttpsPublicOrigin_SetsSecureCookieFlag()
        {
            var options     = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443"));
            var httpRequest = new HttpRequestData("GET", new Uri("http://localhost"));

            var actual = SignInCommand.Run(options.IdentityProviders.Default.EntityId, null, httpRequest, options, null);

            actual.SetCookieName.Should().StartWith(StoredRequestState.CookieNameBase);
            actual.SetCookieSecureFlag.Should().BeTrue();
        }
示例#2
0
        public async Task Saml2Urls_Ctor_FromOwinHttpRequestData_PublicOrigin()
        {
            var ctx     = OwinTestHelpers.CreateOwinContext();
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443/"));
            var subject = await ctx.ToHttpRequestData(null, Options.FromConfiguration.Notifications?.GetRelayState);

            var urls = new Saml2Urls(subject, options);

            urls.AssertionConsumerServiceUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/Saml2/Acs");
            urls.SignInUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/Saml2/SignIn");
        }
示例#3
0
        public async Task AuthServicesUrls_Ctor_FromOwinHttpRequestData_PublicOrigin()
        {
            var ctx     = OwinTestHelpers.CreateOwinContext();
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443/"));
            var subject = await ctx.ToHttpRequestData(null);

            var urls = new AuthServicesUrls(subject, options);

            urls.AssertionConsumerServiceUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/AuthServices/Acs");
            urls.SignInUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/AuthServices/SignIn");
        }
示例#4
0
        public void SignInCommand_Run_PublicOrigin()
        {
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443"));
            var idp     = options.IdentityProviders.Default;

            var request = new HttpRequestData("GET",
                                              new Uri("http://sp.example.com?idp=" + Uri.EscapeDataString(idp.EntityId.Id)));

            var subject = new SignInCommand().Run(request, Options.FromConfiguration);

            subject.Location.Host.Should().Be(new Uri("https://idp.example.com").Host);
        }
示例#5
0
        public void Saml2Urls_Ctor_PerRequest_PublicOrigin()
        {
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443/"));

            options.Notifications.GetPublicOrigin = (requestData) =>
            {
                return(new Uri("https://special.public.origin/"));
            };
            var urls = new Saml2Urls(new HttpRequestData("get", new Uri("http://servername/")), options);

            urls.AssertionConsumerServiceUrl.Should().BeEquivalentTo(new Uri("https://special.public.origin/Saml2/Acs"));
            urls.SignInUrl.Should().BeEquivalentTo(new Uri("https://special.public.origin/Saml2/SignIn"));
        }
示例#6
0
        public async Task Saml2Urls_Ctor_FromOwinHttpRequestData_PublicOrigin()
        {
            var ctx     = OwinTestHelpers.CreateOwinContext();
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443/"));
            var subject = await ctx.ToHttpRequestData(Substitute.For <ICookieManager>(), null);

            var urls = new Saml2Urls(subject, options);

            urls.AssertionConsumerServiceUrl.Should().BeEquivalentTo(
                new Uri("https://my.public.origin:8443/Saml2/Acs"));
            urls.SignInUrl.Should().BeEquivalentTo(
                new Uri("https://my.public.origin:8443/Saml2/SignIn"));
        }
示例#7
0
        public void Saml2Urls_Ctor_FromHttpRequest_PublicOrigin()
        {
            var    url     = new Uri("http://example.com:42/ApplicationPath/Path?name=DROP%20TABLE%20STUDENTS");
            string appPath = "/ApplicationPath";
            var    request = Substitute.For <HttpRequestBase>();

            request.HttpMethod.Returns("GET");
            request.Url.Returns(url);
            request.Form.Returns(new NameValueCollection {
                { "Key", "Value" }
            });
            request.ApplicationPath.Returns(appPath);
            var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443/OtherPath"));
            var subject = request.ToHttpRequestData();
            var urls    = new Saml2Urls(subject, options);

            urls.AssertionConsumerServiceUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/OtherPath/Saml2/Acs");
            urls.SignInUrl.ShouldBeEquivalentTo("https://my.public.origin:8443/OtherPath/Saml2/SignIn");
        }
示例#8
0
        public void IdentityProvider_CreateAuthenticateRequest_PublicOrigin()
        {
            var origin  = new Uri("https://my.public.origin:8443/");
            var options = StubFactory.CreateOptionsPublicOrigin(origin);

            var idp = options.IdentityProviders.Default;

            var urls    = StubFactory.CreateSaml2UrlsPublicOrigin(origin);
            var subject = idp.CreateAuthenticateRequest(urls);

            var expected = new Saml2AuthenticationRequest()
            {
                AssertionConsumerServiceUrl = urls.AssertionConsumerServiceUrl,
                DestinationUrl = idp.SingleSignOnServiceUrl,
                Issuer         = options.SPOptions.EntityId,
                AttributeConsumingServiceIndex = 0
            };

            subject.Should().BeEquivalentTo(expected, opt => opt
                                            .Excluding(au => au.Id)
                                            .Excluding(au => au.SigningAlgorithm)
                                            .Excluding(au => au.RelayState));
        }