public void ShouldCreateMessage()
        {
            var options = new SamlOptions();

            options.SignOutgoingMessages = false;

            var authnRequestMessage = new SamlAuthnRequestMessage();

            authnRequestMessage.AssertionConsumerServiceUrl = "test";

            var xmlDocument = _authnRequestFactory.CreateMessage(options, authnRequestMessage);

            XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDocument.NameTable);

            mgr.AddNamespace("samlp", "urn:oasis:names:tc:SAML:2.0:protocol");
            mgr.AddNamespace("saml", "urn:oasis:names:tc:SAML:2.0:assertion");

            var authnRequestNode = xmlDocument.SelectSingleNode("/samlp:AuthnRequest", mgr);
            var issuerNode       = xmlDocument.SelectSingleNode("/samlp:AuthnRequest/saml:Issuer", mgr);

            Assert.NotNull(authnRequestNode);
            Assert.NotNull(issuerNode);

            Assert.Equal("test", authnRequestNode.Attributes["AssertionConsumerServiceURL"].Value);
            Assert.Equal("", authnRequestNode.Attributes["Destination"].Value);
            Assert.Equal("2.0", authnRequestNode.Attributes["Version"].Value);
        }
        public void ShouldCreateSignedMessage()
        {
            var privateCert = new X509Certificate2(File.ReadAllBytes("PrivateTestCert.pfx"), "test");
            var options     = new SamlOptions {
                SignOutgoingMessages = true, ServiceProviderCertificate = privateCert
            };

            var authnRequestMessage = new SamlAuthnRequestMessage();

            authnRequestMessage.AssertionConsumerServiceUrl = "test";

            var xmlDocument = _authnRequestFactory.CreateMessage(options, authnRequestMessage);

            XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDocument.NameTable);

            mgr.AddNamespace("samlp", "urn:oasis:names:tc:SAML:2.0:protocol");
            mgr.AddNamespace("saml", "urn:oasis:names:tc:SAML:2.0:assertion");

            var authnRequestNode = xmlDocument.SelectSingleNode("/samlp:AuthnRequest", mgr);
            var issuerNode       = xmlDocument.SelectSingleNode("/samlp:AuthnRequest/saml:Issuer", mgr);

            Assert.NotNull(authnRequestNode);
            Assert.NotNull(issuerNode);

            Assert.Equal("test", authnRequestNode.Attributes["AssertionConsumerServiceURL"].Value);
            Assert.Equal("", authnRequestNode.Attributes["Destination"].Value);
            Assert.Equal("2.0", authnRequestNode.Attributes["Version"].Value);
        }
Пример #3
0
        /// <inheritdoc />
        protected override Task HandleChallengeAsync(AuthenticationProperties properties)
        {
            var context = new SamlAuthnRequestMessage
            {
                AssertionConsumerServiceUrl = BuildRedirectUri(Options.CallbackPath),
                Issuer      = Options.ServiceProviderEntityId,
                Destination = Options.IdentityProviderSignOnUrl
            };

            _authnRequestHandler.Handle(Options, Request.HttpContext, context, Options.IdentityProviderSignOnUrl, Options.AuthnRequestBinding, BuildRedirectUri(OriginalPath));

            return(Task.CompletedTask);
        }