コード例 #1
0
        public void Saml2ArtifactBinding_Unbind_FromGet()
        {
            var issuer   = new EntityId("https://idp.example.com");
            var artifact = Uri.EscapeDataString(
                Convert.ToBase64String(
                    Saml2ArtifactBinding.CreateArtifact(issuer, 0x1234)));

            var relayState = "relayState";

            var r = new HttpRequestData(
                "GET",
                new Uri($"http://example.com/path/acs?SAMLart={artifact}&RelayState={relayState}"),
                null,
                null,
                new StoredRequestState(issuer, null, null, null));

            StubServer.LastArtifactResolutionSoapActionHeader = null;

            var result = Saml2Binding.Get(Saml2BindingType.Artifact).Unbind(r, StubFactory.CreateOptions());

            var xmlDocument = new XmlDocument()
            {
                PreserveWhitespace = true
            };

            xmlDocument.LoadXml("<message>   <child-node /> </message>");

            var expected = new UnbindResult(xmlDocument.DocumentElement, relayState, TrustLevel.None);

            result.ShouldBeEquivalentTo(expected);
            StubServer.LastArtifactResolutionSoapActionHeader.Should().Be(
                "http://www.oasis-open.org/committees/security");
            StubServer.LastArtifactResolutionWasSigned.Should().BeFalse();
        }
コード例 #2
0
        public void Saml2ArtifactBinding_Unbind_FromPostWithoutRelayState()
        {
            var issuer   = new EntityId("https://idp.example.com");
            var artifact = Convert.ToBase64String(
                Saml2ArtifactBinding.CreateArtifact(issuer, 0x1234));

            var r = new HttpRequestData(
                "POST",
                new Uri("http://example.com"),
                "/ModulePath",
                new KeyValuePair <string, string[]>[]
            {
                new KeyValuePair <string, string[]>("SAMLart", new[] { artifact }),
            },
                null,
                null);

            StubServer.LastArtifactResolutionSoapActionHeader = null;

            var result = Saml2Binding.Get(Saml2BindingType.Artifact).Unbind(r, StubFactory.CreateOptions());

            var xmlDocument = new XmlDocument()
            {
                PreserveWhitespace = true
            };

            xmlDocument.LoadXml("<message>   <child-node /> </message>");

            var expected = new UnbindResult(xmlDocument.DocumentElement, null, TrustLevel.None);

            result.ShouldBeEquivalentTo(expected);
            StubServer.LastArtifactResolutionSoapActionHeader.Should().Be(
                "http://www.oasis-open.org/committees/security");
        }
コード例 #3
0
        public void Saml2ArtifactBinding_Unbind_FromPost()
        {
            var issuer   = new EntityId("https://idp.example.com");
            var artifact = Convert.ToBase64String(
                Saml2ArtifactBinding.CreateArtifact(issuer, 0x1234));

            var relayState = MethodBase.GetCurrentMethod().Name;

            var r = new HttpRequestData(
                "POST",
                new Uri("http://example.com"),
                "/ModulePath",
                new KeyValuePair <string, IEnumerable <string> >[]
            {
                new KeyValuePair <string, IEnumerable <string> >("SAMLart", new[] { artifact }),
                new KeyValuePair <string, IEnumerable <string> >("RelayState", new[] { relayState })
            },
                new StoredRequestState(issuer, null, null, null));

            StubServer.LastArtifactResolutionSoapActionHeader = null;

            var result = Saml2Binding.Get(Saml2BindingType.Artifact).Unbind(r, StubFactory.CreateOptions());

            var xmlDocument = XmlHelpers.XmlDocumentFromString(
                "<message>   <child-node /> </message>");

            var expected = new UnbindResult(xmlDocument.DocumentElement, relayState, TrustLevel.None);

            result.ShouldBeEquivalentTo(expected);
            StubServer.LastArtifactResolutionSoapActionHeader.Should().Be(
                "http://www.oasis-open.org/committees/security");
        }
コード例 #4
0
        public void Saml2ArtifactBinding_Unbind_FromGet_ArtifactIsntHashOfEntityId()
        {
            var issuer   = new EntityId("https://idp.example.com");
            var artifact = Uri.EscapeDataString(
                Convert.ToBase64String(
                    Saml2ArtifactBinding.CreateArtifact(
                        new EntityId("https://this.entityid.is.invalid"),
                        0x1234)));

            var relayState = "relayState";

            var r = new HttpRequestData(
                "GET",
                new Uri($"http://example.com/path/acs?SAMLart={artifact}&RelayState={relayState}"),
                null,
                null,
                new StoredRequestState(issuer, null, null, null));

            var result = Saml2Binding.Get(Saml2BindingType.Artifact).Unbind(r, StubFactory.CreateOptions());

            var xmlDocument = XmlHelpers.XmlDocumentFromString(
                "<message>   <child-node /> </message>");

            var expected = new UnbindResult(xmlDocument.DocumentElement, relayState, TrustLevel.None);

            result.Should().BeEquivalentTo(expected);
            StubServer.LastArtifactResolutionWasSigned.Should().BeFalse();
        }
コード例 #5
0
        public void Saml2ArtifactBinding_Unbind_FromGetWithoutRelayState()
        {
            var issuer   = new EntityId("https://idp.example.com");
            var artifact = Uri.EscapeDataString(
                Convert.ToBase64String(
                    Saml2ArtifactBinding.CreateArtifact(issuer, 0x1234)));

            var r = new HttpRequestData(
                "GET",
                new Uri($"http://example.com/path/acs?SAMLart={artifact}"));

            StubServer.LastArtifactResolutionSoapActionHeader = null;

            var result = Saml2Binding.Get(Saml2BindingType.Artifact).Unbind(r, StubFactory.CreateOptions());

            var xmlDocument = XmlHelpers.XmlDocumentFromString(
                "<message>   <child-node /> </message>");

            var expected = new UnbindResult(xmlDocument.DocumentElement, null, TrustLevel.None);

            result.Should().BeEquivalentTo(expected);
        }