2014-12-19 33 views
0

我想知道我怎麼可以檢索使用Opensaml library.I下面的元數據文件中的斷言使用者網址已使用該庫,並通過代碼SAML 2.0安全單點登錄使用FilemetadataProvider

得到了實體ID EntityDescriptor entityDescriptor =(EntityDescriptor)filesystemMetadataProvider.getMetadata(); System.out.print(entityDescriptor.getEntityID());

現在我需要從元數據文件得到一個斷言消費者網址你可以請任何人建議我一個代碼片段來檢索這個。

這裏是我的元數據文件

<EntityDescriptor 
 
    xmlns="urn:oasis:names:tc:SAML:2.0:metadata" 
 
    entityID="loadbalancer-9.siroe.com"> 
 
    <SPSSODescriptor 
 
     AuthnRequestsSigned="false" 
 
     WantAssertionsSigned="false" 
 
     protocolSupportEnumeration= 
 
      "urn:oasis:names:tc:SAML:2.0:protocol"> 
 
     <KeyDescriptor use="signing"> 
 
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
 
       <X509Data> 
 
        <X509Certificate> 
 
MIICYDCCAgqgAwIBAgICBoowDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAlVTMRMwEQYDVQQI 
 
EwpDYWxpZm9ybmlhMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEeMBwGA1UEChMVU3VuIE1pY3Jvc3lz 
 
dGVtcyBJbmMuMRowGAYDVQQLExFJZGVudGl0eSBTZXJ2aWNlczEcMBoGA1UEAxMTQ2VydGlmaWNh 
 
dGUgTWFuYWdlcjAeFw0wNjExMDIxOTExMzRaFw0xMDA3MjkxOTExMzRaMDcxEjAQBgNVBAoTCXNp 
 
cm9lLmNvbTEhMB8GA1UEAxMYbG9hZGJhbGFuY2VyLTkuc2lyb2UuY29tMIGfMA0GCSqGSIb3DQEB 
 
AQUAA4GNADCBiQKBgQCjOwa5qoaUuVnknqf5pdgAJSEoWlvx/jnUYbkSDpXLzraEiy2UhvwpoBgB 
 
EeTSUaPPBvboCItchakPI6Z/aFdH3Wmjuij9XD8r1C+q//7sUO0IGn0ORycddHhoo0aSdnnxGf9V 
 
tREaqKm9dJ7Yn7kQHjo2eryMgYxtr/Z5Il5F+wIDAQABo2AwXjARBglghkgBhvhCAQEEBAMCBkAw 
 
DgYDVR0PAQH/BAQDAgTwMB8GA1UdIwQYMBaAFDugITflTCfsWyNLTXDl7cMDUKuuMBgGA1UdEQQR 
 
MA+BDW1hbGxhQHN1bi5jb20wDQYJKoZIhvcNAQEEBQADQQB/6DOB6sRqCZu2OenM9eQR0gube85e 
 
nTTxU4a7x1naFxzYXK1iQ1vMARKMjDb19QEJIEJKZlDK4uS7yMlf1nFS 
 
        </X509Certificate> 
 
       </X509Data> 
 
      </KeyInfo> 
 
     </KeyDescriptor> 
 
     <KeyDescriptor use="encryption"> 
 
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
 
       <X509Data> 
 
        <X509Certificate> 
 
MIICTDCCAfagAwIBAgICBo8wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAlVTMRMwEQYDVQQI 
 
EwpDYWxpZm9ybmlhMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEeMBwGA1UEChMVU3VuIE1pY3Jvc3lz 
 
dGVtcyBJbmMuMRowGAYDVQQLExFJZGVudGl0eSBTZXJ2aWNlczEcMBoGA1UEAxMTQ2VydGlmaWNh 
 
dGUgTWFuYWdlcjAeFw0wNjExMDcyMzU2MTdaFw0xMDA4MDMyMzU2MTdaMCMxITAfBgNVBAMTGGxv 
 
YWRiYWxhbmNlci05LnNpcm9lLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAw574iRU6 
 
HsSO4LXW/OGTXyfsbGv6XRVOoy3v+J1pZ51KKejcDjDJXNkKGn3/356AwIaqbcymWd59T0zSqYfR 
 
Hn+45uyjYxRBmVJseLpVnOXLub9jsjULfGx0yjH4w+KsZSZCXatoCHbj/RJtkzuZY6V9to/hkH3S 
 
InQB4a3UAgMCAwEAAaNgMF4wEQYJYIZIAYb4QgEBBAQDAgZAMA4GA1UdDwEB/wQEAwIE8DAfBgNV 
 
HSMEGDAWgBQ7oCE35Uwn7FsjS01w5e3DA1CrrjAYBgNVHREEETAPgQ1tYWxsYUBzdW4uY29tMA0G 
 
CSqGSIb3DQEBBAUAA0EAMlbfBg/ff0Xkv4DOR5LEqmfTZKqgdlD81cXynfzlF7XfnOqI6hPIA90I 
 
x5Ql0ejivIJAYcMGUyA+/YwJg2FGoA== 
 
        </X509Certificate> 
 
       </X509Data> 
 
      </KeyInfo> 
 
      <EncryptionMethod Algorithm= 
 
       "https://www.w3.org/2001/04/xmlenc#aes128-cbc"> 
 
       <KeySize xmlns="https://www.w3.org/2001/04/xmlenc#">128</KeySize> 
 
      </EncryptionMethod> 
 
     </KeyDescriptor> 
 
     <SingleLogoutService 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/federation/ 
 
      SPSloRedirect/metaAlias/sp" 
 
      ResponseLocation="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/SPSloRedirect/metaAlias/sp"/> 
 
     <SingleLogoutService 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/SPSloSoap/metaAlias/sp"/> 
 
     <ManageNameIDService 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/federation/ 
 
      SPMniRedirect/metaAlias/sp" 
 
      ResponseLocation="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/SPMniRedirect/metaAlias/sp"/> 
 
     <ManageNameIDService 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/SPMniSoap/metaAlias/sp" 
 
      ResponseLocation="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/SPMniSoap/metaAlias/sp"/> 
 
     <NameIDFormat> 
 
      urn:oasis:names:tc:SAML:2.0:nameid-format:persistent 
 
     </NameIDFormat> 
 
     <NameIDFormat> 
 
      urn:oasis:names:tc:SAML:2.0:nameid-format:transient 
 
     </NameIDFormat> 
 
     <AssertionConsumerService 
 
      isDefault="true" 
 
      index="0" 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/Consumer/metaAlias/sp"/> 
 
     <AssertionConsumerService 
 
      index="1" 
 
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
 
      Location="https://LoadBalancer-9.siroe.com:3443/ 
 
      federation/Consumer/metaAlias/sp"/> 
 
    </SPSSODescriptor> 
 
\t <test>true</test> 
 
\t <issuer>www.tryyujh.com</issuer> 
 
</EntityDescriptor>

回答

0
for (AssertionConsumerService acs : entityDescriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS) 
     .getAssertionConsumerServices()) { 
     assertionConsumerServiceURL = ars.getLocation(); 
} 

我對如何使用OpenSAML和元數據的my blogg,在我的書,A Guide to OpenSAML更多的例子。

+0

我已經通過這種方法試圖它被拋出異常空指針exception.for(AssertionConsumerService ACS:entityDescriptor.getSPSSODescriptor(SAMLConstants.SAML20P_NS) \t \t \t \t .getAssertionConsumerServices()){ \t \t \t \t assertionConsumerServiceURL = ACS .getLocation(); \t \t \t \t} –