2015-09-25 1 views
0

Je suis impatient de lire les métadonnées d'une Idp en utilisant Open Saml 2. Quand j'essaye de unmarshall les métadonnées openSaml montrent seulement ce getter pour les attributs get Inconnu Atrributes(). On dirait qu'il me manque un certain point car en lisant la réponse Idp SAML le code fonctionne très bien. (il montre getAssertions() qui renvoie une liste d'assertions).OpenSaml lire les métadonnées

J'ai besoin d'analyser les métadonnées et de trouver des informations concernant l'Idp.

Voici la méthode

 public Metadata metadataReader() { 

     ByteArrayInputStream bytesIn = new ByteArrayInputStream(ISSUER_METADATA_URL.getBytes()); 
     BasicParserPool ppMgr = new BasicParserPool(); 

     ppMgr.setNamespaceAware(true); 
     // grab the xml file 
//  File xmlFile = new File(this.file); 
     Metadata metadata = null; 
     try { 
      Document document = ppMgr.parse(bytesIn); 
      Element metadataRoot = document.getDocumentElement(); 
      QName qName = new QName(metadataRoot.getNamespaceURI(), metadataRoot.getLocalName(), 
        metadataRoot.getPrefix()); 
      Unmarshaller unmarshaller = Configuration.getUnmarshallerFactory().getUnmarshaller(qName); 
      metadata = (Metadata) unmarshaller.unmarshall(metadataRoot); 


      return metadata; 

     } catch (XMLParserException e) { 
      e.printStackTrace(); 
     } catch (UnmarshallingException e) { 
      e.printStackTrace(); 
     } 

     return null; 

    } 

Répondre

1

Je suggère d'utiliser un fournisseur de métadonnées pour faire le levage de charges lourdes pour vous. FilesystemMetadataProvider est souvent un bon ajustement. J'ai un blog post qui explique comment l'utiliser.

+0

Quand je tente d'utiliser votre code que je reçois fournisseur de métadonnées n'a pas pu initialiser correctement, échec rapide = true, l'arrêt org.opensaml.saml2.metadata.provider.MetadataProviderException: Saw une erreur de type « java.lang.NoClassDefFoundError 'avec message' org/w3c/dom/ElementTraversal '. Et je ne peux pas non plus comprendre comment obtenir des informations SingleLogoutService. –

+1

ressemble à un problème de dépendance. Obtenir SLO est la même chose que d'obtenir SSO dans le post. Obtenez simplement SingleLogoutService au lieu de SingleSignOnService –