WSO2 DSS:如何在请求中动态设置数据库用户和密码而不进行映射

时间:2013-07-01 12:37:27

标签: wso2 wso2dss

我需要为Oracle数据库创建数据服务。我已经尝试创建它在服务定义中设置数据库用户和密码,它工作得很好,但我需要根据登录到最终应用程序的用户与不同用户建立数据库连接

我需要将请求中的数据库用户和密码传递给服务,我需要WSO2使用这些凭据来建立与Oracle的连接。

我无法为每个用户进行映射,因为有很多不同的用户,而且无法管理。

这可能吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

因此,WSO2 DSS能够提供动态用户身份验证,此处将对此进行说明[1]。您可以提供静态映射配置,也可以提供Java类实现以在运行时动态地提供映射。这是如何工作的,它将服务认证的Carbon用户映射到数据库用户。因此,您必须像使用UsernameToken一样使用数据服务,并且在调用服务时必须提供用户/密码,然后将其映射到数据库用户。

因此,如果这种方法不可行,并且如果您确实需要在消息有效负载中提供用户/密码,则可能会编写Axis2处理程序并将当前消息的用户名+密码注入"用户名" MessageContext属性,所以当我们读取用户名时,我们将获得"用户名+密码"我们先前在处理程序中设置。 (我真的不记得MessageContext属性是"用户名"或者不是,最好检查一下)。所以无论如何,正如我所提到的,这些信息稍后将在" DynamicUserAuthenticator#lookupCredentials(String user)"方法"用户"参数。因此,我们可以从中解码用户名/密码并从该方法返回,该方法将在创建数据库连接时使用。

[1] http://docs.wso2.org/wiki/display/DSS301/Dynamic+User+Authentication

干杯, 长香。