SAML2, авторизация сертификата и веб-сервисы для HIE - PullRequest
0 голосов
/ 08 октября 2018

Мы пытаемся подключиться к внешнему HIE (Обмен медицинской информацией) с помощью веб-сервисов.Они используют токен SAML и сертификат для проверки.HIE установил наш сертификат, и мы используем приведенный ниже код для вызова конечной точки обслуживания HIE.,Всякий раз, когда я пытаюсь выполнить приведенный ниже сегмент кода, мы получаем либо ошибку авторизации, либо 400 неверных запросов?Любая помощь, если нам нужно сделать что-то еще?

            string endPoint = @"https://www.test.com";
        string key2 = @"Cert.pfx";

        string filepath = @"SOAPrequest.xml";
        TextReader xmlRead = new StreamReader(filepath);
        string payLoad = xmlRead.ReadToEnd();
        xmlRead.Close();

        // Cert Issues by Our Organization
            X509Certificate2 cert2 = new X509Certificate2(key2, @"Password");
            var assert = new Saml2Assertion(new Saml2NameIdentifier(@"ourOrg.com"));
            assert.SigningCredentials = new X509SigningCredentials(cert2);
            assert.Subject = new Saml2Subject();
            assert.Subject.NameId = new Saml2NameIdentifier(@"Our Organization") { Value = "ourorg" };

            assert.Id = new Saml2Id();
            assert.IssueInstant = DateTime.Now;



            Saml2Attribute org = new Saml2Attribute("urn:oasis:names:tc:xspa:1.0:subject:organization");
            // Adding atrribute values

            var item = new Saml2AttributeStatement();
            item.Attributes.Add(org);
            assert.Statements
                  .Add(item);

            // Write the token to XML
            Saml2SecurityToken saml2 = new Saml2SecurityToken(assert);
            StringBuilder bld = new StringBuilder();
            XmlWriter wr = XmlWriter.Create(bld);
            WSSecurityTokenSerializer serializer = new System.ServiceModel.Security.WSSecurityTokenSerializer();
            Saml2SecurityTokenHandler hdlr = new Saml2SecurityTokenHandler();
            hdlr.WriteToken(wr, saml2);

            // Add the PFX Certificate
            ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(endPoint);
            req.AllowAutoRedirect = true;
            req.ClientCertificates.Add(cert2);

            // Add SAML
            req.Headers[HttpRequestHeader.Authorization] = bld.ToString();
            req.Method = "POST";
            req.ContentType = "text/xml;encoding='utf-8'";
            WebResponse resp = req.GetResponse();

TIA С уважением Шанкара

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...