我正在尝试使用XACML进行授权。
我已经成功地从正常的Axis2拦截器与WSO2身份服务器(PDP)进行通信。
现在我正在尝试使用Wso2 ESB作为PEP(在下面的示例中提到)
http://wso2.com/library/articles/2010/10/using-xacml-fine-grained-authorization-wso2-platform/
问题是我无法理解如何从Web应用程序调用ESB? 在上面的链接中,他们使用Java客户端连接ESB,通过UT安全性调用ESB的代理服务。
我不确定此示例中给定的Java类是否是正确的方法。因为它需要代理服务及其安全策略的知识。
此外,我已经看到,如果您想要抽象PDP,那么将来您可以选择将其替换为任何其他新PDP,那么您应该使用WS-XACML标准进行PEP到PEP通信。
我还没有在这个上找到任何样本,
有没有其他标准方法可以实现这一目标?或任何有用的例子。
答案 0 :(得分:1)
WSO2 ESB包含称为权利中介的PEP。 ESB可用作后端Web服务的安全网关。让我解释一下ESB的一些用例。例如,您的系统中有一些遗留服务(或带有SOAP和REST的标准Web服务)。您需要为该后备服务应用安全性(身份验证和授权)。因此,您可以使用WSO2 ESB支持这些服务并在不更改现有系统的情况下保护它们。您可以使用ESB将现有服务作为标准的基于SOAP的Web服务(代理服务)或REST API轻松公开。然后,您可以使用Web服务安全性(WS-Security,是UT或任何其他)或API安全性(OAuth / Basic Auth)来保护它们。您可以使用这些方法轻松管理身份验证。如果您需要细粒度授权,那么您可以使用Entitlement mediator和WSO2IS。
好的,我不确定你的具体情况。我想,你有一个Web应用程序,你需要调用一个Web服务。你使用ESB来实现授权你是如何认证的?您可能有一些已在Web应用程序中实现的身份验证机制?然后,您可以拥有经过身份验证的用户的用户名,该用户名值可以通过HTTP标头发送到ESB(假设Web应用程序和ESB位于内部网络中并使用SSL)。在ESB冥想流程中,您可以提取该用户名并将其设置为Entitlement mediator(因此您不需要始终应用UT)。唯一的要求是用户名必须可供授权调解员使用(这很简单,用户必须在授权之前进行身份验证)
因此,从Web应用程序到ESB,您不需要Java客户端,它可以是任何可以调用您的Web服务的客户端。
WS-XACML是一些古老且不受欢迎的个人资料。我不认为使用它更好。标准方式是与PEP-PDP通信是REST / JSON配置文件。但是WSO2IS仍然不支持它。您可以从here
中找到更多详细信息