我需要为 Oracle 数据库创建数据服务。我已经尝试在服务的定义中设置数据库用户和密码来创建它,效果很好,但是我需要根据登录最终应用程序的用户与不同的用户建立与数据库的连接.
我需要将请求中的数据库用户和密码传递给服务,并且我需要 WSO2 使用这些凭据来建立与 Oracle 的连接。
我不能为每个用户做一个映射,因为有很多不同的用户,而且不可能管理。
这可能吗?我该怎么做?
因此 WSO2 DSS 有能力提供动态用户身份验证,这在此处记录 [1]。您可以提供静态映射配置,也可以提供 Java 类实现以在运行时动态提供映射。所以这是如何工作的,它将服务认证的 Carbon 用户映射到数据库用户。因此,您必须使用类似 UsernameToken 才能与数据服务一起使用,并且您必须在调用服务时提供用户/密码,然后将其映射到数据库用户。
因此,如果这种方法不可行,并且您确实需要在消息有效负载中提供用户/密码,那么可能会编写一个 Axis2 处理程序并将当前消息的用户名+密码作为“用户名”MessageContext 属性注入,所以在内部,当我们读取用户名时,我们会得到我们之前在处理程序中设置的“用户名+密码”。(我真的不记得 MessageContext 属性是否是“用户名”,最好检查一下)。所以无论如何,正如我所提到的,这些信息稍后将在“DynamicUserAuthenticator#lookupCredentials(String user)”方法的“user”参数中提供。所以从那里,我们可以从中解码用户名/密码并从该方法返回它,这将在创建数据库连接时使用。
[1] http://docs.wso2.org/wiki/display/DSS301/Dynamic+User+Authentication
干杯,安佳娜。