如何使用opensaml v3?由于v2已经停止更新,因此几乎没有文档可供参考。

12

有没有使用Open SAML库v3的端到端示例?我找不到任何文档,根据https://wiki.shibboleth.net/confluence/display/OpenSAML/Home的说法,v2已经不再支持。

我正在使用以下代码获取SAML声明-

  private UnmarshallerFactory unmarshallerFactory;
  private DocumentBuilder docBuilder;

  @PostConstruct
  public void init() {

    try {
      InitializationService.initialize();
      DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
      documentBuilderFactory.setNamespaceAware(true);
      docBuilder = documentBuilderFactory.newDocumentBuilder();
      unmarshallerFactory = XMLObjectProviderRegistrySupport.getUnmarshallerFactory();
    } catch (Exception e){
      logger.error("Error: ",e);
    }
  }

  public Assertion getSamlAssertion(String samlResponse)
      throws IOException, XMLParserException, UnmarshallingException, SAXException {

    Document document = docBuilder.parse(new StringInputStream(samlResponse));

    Element element = document.getDocumentElement();
    Unmarshaller unmarshaller = unmarshallerFactory.getUnmarshaller(element);
    XMLObject responseXmlObj = unmarshaller.unmarshall(element);
    Response response = (Response) responseXmlObj;
    return response.getAssertions().get(0);

  }

我的 POM-

         <dependency>
            <groupId>org.opensaml</groupId>
            <artifactId>opensaml-core</artifactId>
            <version>3.2.0</version>
        </dependency>


        <dependency>
            <groupId>org.opensaml</groupId>
            <artifactId>opensaml-saml-api</artifactId>
            <version>3.2.0</version>
        </dependency>
问题在于我的unmarshaller返回了null。我已验证samlResponse是有效的。

给那位点踩的用户- 能否解释一下我在解释问题方面还能做得更好的地方? - gauravphoenix
2
我同意,我甚至找不到这个库的“入门指南”。 - Alic
1个回答

4

你需要在POM文件中包含实现。

<dependency>
    <groupId>org.opensaml</groupId>
    <artifactId>opensaml-saml-impl</artifactId>
    <version>3.2.0</version>
</dependency>

在第3版中,其中一项工作是将库分成许多不同的模块。
是的,文档确实是一个问题。但据我所知,开发团队已经意识到了这一点。与此同时,我写了一本关于这个主题的书,《OpenSAML V3指南》,可以通过此链接获得。它介绍了如何使用OpenSAML以及V3中的更改。

不幸的是,如果您尝试构建 IdP 而非 SP,则那个指南并不适用。 - Kirill G.
是的,抱歉,我想这是大多数人需要的。 - Stefan Rasmusson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接