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

首先,我知道仅通过拥有其余端点的URL即可使用REST APIS,另一方面(SOAP),除非开发客户端,否则就无法使用任何遥远的SOAP WS。这是对的吗?如果是的话,这是两个大家族之间的唯一区别吗?

其次,出于安全性的考虑,我想将XACML应用于某些SOAP Web服务。我做了一个恢复XACML整个过程的图。

java - SOAP Web服务上的XACML应用程序-LMLPHP

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

最佳答案

您可以找到在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();
 ...

09-10 11:02
查看更多