我是Web服务的新手,我想知道一些问题的答案。
首先,我知道仅通过拥有其余端点的URL即可使用REST APIS,另一方面(SOAP),除非开发客户端,否则就无法使用任何遥远的SOAP WS。这是对的吗?如果是的话,这是两个大家族之间的唯一区别吗?
其次,出于安全性的考虑,我想将XACML应用于某些SOAP Web服务。我做了一个恢复XACML整个过程的图。
我使用简单的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(支持embedded或remote 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();
...