使用PasswordDigest进行通信管理(来自WSS4J的WSPasswordCallback)

时间:2013-05-17 09:17:55

标签: web-services security passwords wss wss4j

情景:

我们正在开发一个Java库来部署一个身份验证子系统,该子系统充当两个端点的中介:一个创建者程序(它向客户端发送SOAP消息,作为CallbackHandler实现)和WebService (基于CXF,它将验证用户和密码)。

这是系统的逻辑图:


|------|            |-------|            
|Client|--SOAP msg->|Program|
|------|            |-------|            
                      |           |--------|  
                      \-Callback->|Java Lib|
                                  |--------|                             
                                    |             |--|                |----|
                                    \-User&Pass-->|WS|<-(validation)->|LDAP|
                                                  |--|   SOAP msg     |----|

在其他实现中可以看到代码(将在我们的Java Lib中添加)应该是下一个(考虑到密码的类型,出于安全原因,显然是“PasswordDigest”(见过)在OASIS UserName Token specification,第196-197行)):

        if (callbacks[i] instanceof WSPasswordCallback) {
            WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
            sString login = pc.getIdentifier();
            String password = getPassword(login);
            pc.setPassword(password); 
        }

String password = getPassword(login);”行需要本地存储文件(或数据库)以便用户通过维护及其后续检查。

所以,这就是障碍,我们不允许维护该文件。此外,WebService仅提供身份验证服务(对用户和密码给出是/否),我们对原始程序或客户端没有任何其他访问权限。

我们应该如何处理?

提前致谢。

0 个答案:

没有答案