簡體   English   中英

在XSD中使用SAML斷言

[英]Using SAML Assertion in XSD

我有一個webservice操作,我將獲取SAML斷言作為請求Body的一部分。 我有以下XSD:

<xsd:element name="CreateRequest">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="info" type="SomeRequestObj"/>
            <xsd:element ref="saml:Assertion" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

saml:斷言是指:

<xsd:import namespace="urn:oasis:names:tc:SAML:2.0:assertion"schemaLocation="../samlv2_0/saml-schema-assertion-2.0.xsd"/>

此SAM模式是從SAML 2.0復制的。 這將生成名為* Type.java類。 我很難為此創建一個單元測試(這是一個單獨的UI應用程序)。

我的請求需要請求正文中的SAML AssertionType元素。 所以,我不能使用OpneSaml來生成它,因為它給了我一個SAML Assertion對象而不是AssertionType。

我嘗試手動生成AssertionType對象,但我很難這樣做。
有沒有辦法使用OpenSaml來生成這個?
正如我所看到的那樣,xml將與我在使用OpenSaml生成Assertion對象的情況下相同。 有沒有辦法簡化這個?

編輯:添加了斷言的XSD片段

<element name="Assertion" type="saml:AssertionType"/>
<complexType name="AssertionType">
<sequence>
<element ref="saml:Issuer"/>
<element ref="ds:Signature" minOccurs="0"/>
<element ref="saml:Subject" minOccurs="0"/>
<element ref="saml:Conditions" minOccurs="0"/>
<element ref="saml:Advice" minOccurs="0"/>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Statement"/>
<element ref="saml:AuthnStatement"/>
<element ref="saml:AuthzDecisionStatement"/>
<element ref="saml:AttributeStatement"/>
</choice>
</sequence>
<attribute name="Version" type="string" use="required"/>
<attribute name="ID" type="ID" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/>
</complexType>

這會生成AssertionType對象。

SAML斷言的類型為“AssertionType”,但元素名稱為“Assertion”。 OpenSaml生成的<Assertion>元素應該沒問題。

該元素在SAML核心規范的 2.3.3節中定義。

使用JAXB從XSD生成類時,嘗試使用外部綁定文件。 看到這個主題(我猜它的第二個答案是你正在尋找的): JAXB:如何在XSD中指定attr類型時更改XJC生成的類名?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM