当前位置: 首页 > 知识库问答 >
问题:

在 XSD 中使用 SAML 断言

施弘壮
2023-03-14

我有一个webservice操作,其中我将获得SAML断言作为请求体的一部分。我跟踪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:断言是指:< br>

这个saml模式是从saml 2.0复制的。它生成名为*<code>Type.java</code>的类。我很难为此创建一个单元测试(这是一个带有UI的独立应用程序)

我的请求需要请求正文中的SAML AssertionType元素。因此,我不能使用OpneSaml来生成它,因为它给了我一个SAML断言对象,而不是断言类型

我尝试手动生成AssertionType对象,但我很难做到这一点
是否有方法使用OpenSaml生成此代码
正如我所见,xml将与我在使用OpenSaml生成断言对象的情况下得到的相同。有没有办法简化这一点?

EDIT:添加了断言的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>

这将生成断言类型对象。


共有2个答案

锺星腾
2023-03-14

当使用JAXB从XSD生成类时,尝试使用外部绑定文件。请看这个主题(我想它的第二个答案就是你正在寻找的): JAXB:当在XSD中指定了attr类型时,如何更改XJC生成的类名称?

吴均
2023-03-14

SAML断言是复杂类型“AssertionType”,但元素名称是“Assertion”。

SAML核心规范的第2.3.3节中定义了该元素。

 类似资料:
  • 这是我面临的问题,需要一些帮助/指导。 我已经从引擎生成了一条XML消息,需要将其解析为服务。为了做到这一点,我必须将该消息更改为SOAP消息,并在其上插入SAML令牌。我正在尝试使用C#代码执行此操作。下面是我生成的输入消息和预期的输出: 近期产量

  • 我正在使用多个SP实现单点登录。以下是我的基本理解: 1) 浏览器(用户)向服务提供商(SP)请求资源 2)SP重定向(使用SAML请求)到身份提供程序(IdP) 3)由于这是第一次登录,用户将向(IdP)提供其有效凭据 4)然后,IdP将浏览器(带有包含SAML令牌的SAML响应)重定向到SP页面。 现在,假设我有服务提供商A和服务提供商B。一个用户已经完成了关于服务提供商A的步骤。从服务提供商

  • 问题内容: 尝试使用SAML 2.0解密加密的断言时遇到问题。我使用的库是OpenSAML Java库2.5.2。 加密的断言如下所示: 我确实使用以下openssl命令将PEM格式的私钥转换为pkcs8格式: 然后,我准备尝试解密加密的断言。这是我的Java代码: 运行此代码总是导致无法解密断言。我确实收到以下错误: 我真的不知道在这种情况下我在做什么错。我将私钥转换为pkcs8,加载了SAML

  • 我正在尝试使用谷歌办公套件设置SAML。但是我得到了这个错误 我已经配置断言应该在我的SP中签名。我可以在其他IDP(如onelogin、okta)中看到签署响应断言的选项。该配置适用于其他IDP,但看不到在谷歌办公套件SAML中唱响应断言的选项。 在Gsuite中,我只能看到签名响应的选项,而不能看到断言。 如何正确设置此设置? SP元数据如下所示:

  • 我有一个Java Web应用程序,我想将其作为服务提供商并实现SAML。我不确定如何做这件事的工作流程。 我已经阅读了这个SO问题,但仍然无法完全理解。在问题中,他们说他们需要向IDP发送请求,如果我是对的,称为断言。 如何创建断言?我在那里看到了样品。但是在哪里传递登录凭据呢? 另外,我如何在IDP注册我的应用程序,我是否需要安装IDP为此提供的一些证书?工作流程是什么? 谢谢

  • 尝试将我们组织的web应用程序与Okta的SSO集成。 除了我找不到一种方法来传递用户在断言SAML中所属的本机Okta组之外,一切都很顺利(在“编辑SAML集成”表单中没有这样的选项)。 知道怎么做吗?