【问题标题】:XACML application on SOAP Web ServicesSOAP Web 服务上的 XACML 应用程序
【发布时间】:2016-04-26 14:51:09
【问题描述】:

我是网络服务的新手,我想知道一些问题的答案。

首先,我知道 REST APIS 可以通过拥有其余端点的 URL 来使用,另一方面 (SOAP),你不能使用任何遥远的SOAP WS,除非您开发客户端。这是正确的吗?如果是的话,是不是只有两个大家族的区别?

其次,出于安全目的,我想在一些 SOAP Web 服务上应用 XACML。我做了一个恢复XACML整个过程的图。

我用简单的 2 种方法开发了一些基本的 SOAP Web 服务,但我不知道应该从哪里开始 XACML 代码和配置。我想请你们提供一些有用的链接来应用 XACML 安全过滤器。

【问题讨论】:

  • 您使用的是哪种 XACML 实现?
  • Axiomatics 提供了可用于此目的的 JAX-WS PEP 和 PDP。我可以从您的图片中看到您正在使用 Heras-AF。是这样吗?
  • 感谢您回答我的问题。就像我说我即将开始开发 XACML 过滤器,现在,我只是理解这个概念。你认为我应该使用哪个实现,如果你当然可以,分享一些关于它的有用链接,一些 java 代码示例。

标签: java web-services security soap xacml3


【解决方案1】:

您可以在Colm O hEigeartaigh's blog 上找到执行基于 XACML (XACML 3.0) 授权的 CXF 拦截器示例(Colm 是主要的 CXF 开发人员之一)。 CXF拦截器的实际源码:XACML3AuthorizingInterceptor。它使用 OpenAZ 作为 XACML 实现,但您可以调整它以使用另一个 XACML 实现,例如 David Brossard 提到的 Axiomatics 或 AuthzForce(支持 embeddedremote RESTful PDP 模式),或最后提到的其他实现XACML TC's page.

CXF Interceptor 的第一个重要部分位于handleMessage(Message message) 方法的开头:

SecurityContext sc = message.get(SecurityContext.class);

SecurityContext 为您提供有关经过身份验证的用户的信息,例如用户角色,您可以将其用作 XACML 请求中的 XACML 主题属性。

代码使用DefaultXACML3RequestBuilder class 进一步创建XACML 请求,使用CXFMessageParser 从CXF Message 中提取其他信息——您可以在cxf-rt-security-saml 库中找到这些信息——例如SOAP 服务名称、操作名称(在 WSDL 中定义)和端点 URI:

 CXFMessageParser messageParser = new CXFMessageParser(message);
 ...
 String actionToUse = messageParser.getAction(action);
 ...
 QName serviceName = messageParser.getWSDLService();
 QName operationName = messageParser.getWSDLOperation();
 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2017-05-03
    • 2010-09-29
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多