I xmlseclibs bir soap belgeyi denemek ve imzalamak için kullanıyorum, ama ben imzalama veya doğrulayarak ediyorum bağlı olarak aynı şekilde şeyler meşrulaştırılmaz görünmüyor.
Size bir örnek vereyim. Bu benim imzalamak için çalışıyorum XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" MajorVersion="1" MinorVersion="1" IssueInstant="2010-02-04T15:27:43Z" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester"/>
</samlp:Status>
</samlp:Response>
</soapenv:Body>
</soapenv:Envelope>
Bazı kod ortak anahtar ve özel anahtar sertifikalarının bir arada kullanarak imzalamak için PHP çalışma var, ve o iş gibi görünüyordu. Tüm uygun malzeme ile <ds:Signature>
unsuru ekledi ve büyük görünüyordu. Ama sonra hemen xmlseclibs (ve ortak anahtar sertifikası) ile tekrar, bunu imzaladıktan sonra doğrulamak için çalışıyoruz bunu test, ancak doğrulama başarısız oldu. Yani aynı kod kütüphanesi imzalama ve geçerlilik hem de yapıyor, ancak iki süreç nedense kabul etmiyorum.
Ben ne yaptığını öğrenmek için xmlseclibs için bazı hata ayıklama kodu eklenmiş, ve ben bu iki durum farklı şeyler kanonlaştırır çünkü imzalama anahtarı ile geliyor ve doğrulama anahtarı ile geliyor nedeni farklıdır olduğunu fark etti. Ben <samlp:Response>
elemanı imzalamak için bunu söylemek, bu kanonik formu işaretleri (ben okunabilmesi için buraya satırsonlarını ekledim) 'dir:
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2010-02-04T15:27:43Z" MajorVersion="1" MinorVersion="1" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester">
</samlp:StatusCode>
</samlp:Status>
</samlp:Response>
O imzayı doğrulamak için gittiğinde Ancak, bu (yine burada, ben ekledim satırsonlarının) karşı doğrulamak için hesaplar kanonik şeklidir:
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2010-02-04T15:27:43Z" MajorVersion="1" MinorVersion="1" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester">
</samlp:StatusCode>
</samlp:Status>
</samlp:Response>
Ilk yok iken Yani gördüğünüz gibi, bu sürüm, <samlp:Response>
öğeden xmlns:saml
niteliğini atlar. (Bu, hem de içerdiği xmlns:samlp
niteliğinin farklı olduğunu unutmayın.) Bu xmlseclibs bir hata gibi oldukça net görünüyor, ama yine de ben sadece bilseydim kendimi düzeltmek için mutlu olurdu biri hangi kanonik formu doğru biriydi. Bu özellik özel kurallı tarafından atlanmış mıdır? Ya da dahil edilmelidir? Doğru seçkin kanonik hangisi?