当前位置: 首页 > 面试题库 >

如何在不调用STSClient的情况下将SAML令牌直接放入JAX-WS服务

闽承望
2023-03-14
问题内容

去年,我通过此链接为Web服务制作了JAX-
WS客户端

该Web
服务使用STS服务获取SAML令牌并使用它访问主要Web服务。我使用apache
cxf的wsdl2java为该Web服务生成JAX-WS客户端。一切都很好。

最近,他们已更新其STS服务端点。这个新的STS服务端点。其中具有不同的签名和摘要算法。它在请求正文中有一些额外的元素。

我试图修改当前代码,以使其支持新的STS服务。但是我的代码正在发送相同的RequestSecurityToken请求。我的意思是它没有采用新的要求。我试图采用这种方法,但是我做不到。

新的STS服务需要http://www.w3.org/2001/04/xmldsig-more#rsa-
sha256作为新的签名方法,并需要http://www.w3.org/2001/04/xmlenc#sha256作为新的摘要方法算法。另外,它在请求正文中需要以下元素:

    <tr:ActAs xmlns:tr="http://docs.oasis-open.org/ws-sx/ws-trust/200802">
<v13:RelationshipToken xmlns:v13="http://vanguard.business.gov.au/2016/03" ID="1bc9a44e-dccd-49e2-8f29-40d7b1257325">
<v13:Relationship v13:Type="OSPfor">
<v13:Attribute v13:Name="SSID" v13:Value="1234567895"/>
</v13:Relationship>
<v13:FirstParty v13:Scheme="uri://abr.gov.au/ABN" v13:Value="27809366375"/>
<v13:SecondParty v13:Scheme="uri://abr.gov.au/ABN" v13:Value="89567587874"/>
</v13:RelationshipToken>
</tr:ActAs>

另外,这里也有细微的差别。我现在有两种想法:

  1. 如果我可以将旧代码更改为STS客户端,则使用这些值发送请求。我尝试过但没有成功。
  2. 它们提供了一些代码,这些代码支持从STS客户端获取SAML断言令牌和证明令牌。如果我可以直接将SAML断言令牌放入我的JAX-WS客户端,那么这个问题也可以解决。

任何帮助或建议,我们将不胜感激


问题答案:

SHA-256摘要算法通常通过使用需要它的AlgorithmSuite策略来设置(例如Basic256Sha256)。我在政策中看到他们仍然在使用“
Basic256”。CXF允许您通过一些配置属性来配置RSA-SHA256(例如,请参见http://cxf.apache.org/docs/ws-
securitypolicy.html上的 “
ws-security.asymmetric.signature.algorithm” )。您可以直接在STSClient上设置ActAs对象/元素。



 类似资料:
  • 我在java上为tomcat应用服务器编写了一个简单的JAX-WS Web服务。 我有一个接口和实现类: 接口 实施 我的问题是,在我的wsdl文件中,响应类是在xsd文件中定义的 这是我的wsdl文件的片段 如何使web服务生成WSDL文件中的所有类型而不是单独的XSD文件 我是否应该更改任何配置或向web服务添加一些注释?

  • 我有一个正在使用Azure AD身份验证的应用程序。我还需要访问Microsoft Graph API以获取用户数据。我发现的每个向Graph API发出请求的示例都使用了缓存的会话令牌,但由于我使用的是JWT,因此显然不需要存储会话状态。如何使用JWT将我的应用程序作为受众来获得具有适当受众的JWT? 例如,这里有一个从Microsoft Graph AspNetCore示例检索令牌的请求: 它

  • 如何在不使用databricks CSV api的情况下将CSV文件直接读入spark DataFrames? 我知道有databricks CSV api,但我不能使用该api... 我知道有case类可以使用,并根据cols(0)位置映射cols,但问题是我有超过22个颜色,因此我不能使用case类,因为在case类中,我们限制只能使用22个颜色。我知道有structtype来定义模式,但我觉

  • 问题内容: 如何使用JavaScript解码JWT的有效负载?没有图书馆。因此,令牌仅返回可由我的前端应用程序使用的有效负载对象。 令牌示例: 结果是有效负载: 问题答案: 工作的Unicode文本JWT解析器功能:

  • 有什么方法可以让访问部署的云运行应用程序变得更有趣吗? PS:我不想把应用程序放在我们的cluser中-所以这里只有完全管理是一个选项

  • 问题内容: 我有一个需要向Internet上的系统发出SOAP客户端请求的应用程序,因此它需要通过我们的HTTP代理。 可以通过设置系统范围的值(例如系统属性)来做到这一点: 或通过设置默认的ProxySelector(也是系统范围的设置): 如果其他子系统可能希望通过不同的HTTP代理或没有任何代理来访问Web服务器,那么这两个都不是明智的选择。使用可以让我配置哪些连接使用代理,但是对于大型应用