我们正在开发一个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仅提供身份验证服务(对用户和密码给出是/否),我们对原始程序或客户端没有任何其他访问权限。
我们应该如何处理?
提前致谢。