1

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

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

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

使用 XACML 图的请求/响应过程

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

4

1 回答 1

1

您可以在Colm O hEigeartaigh 的博客上找到执行基于 XACML (XACML 3.0) 授权的 CXF 拦截器示例(Colm 是主要的 CXF 开发人员之一)。CXF 拦截器的实际源代码:XACML3AuthorizingInterceptor。它使用 OpenAZ 作为 XACML 实现,但您可以调整它以使用另一个 XACML 实现,例如 David Brossard 在此处提到的 Axiomatics,或 AuthzForce(支持嵌入式远程 RESTful PDP 模式),或XACML末尾提到的其他实现TC 的页面

CXF 拦截器的第一个重要部分是在方法的开头handleMessage(Message message)

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

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

该代码使用DefaultXACML3RequestBuilder 类进一步创建 XACML 请求,该类Message使用CXFMessageParser从 CXF 中提取其他信息- 您可以在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();
 ...
于 2016-11-23T15:04:35.737 回答