我尝试将我们的应用程序从WAS 8.0迁移到Liberty Profile。 在我们的应用程序中,我需要有可能在没有用户密码的情况下进行编程登录。 在WAS 8.0中,这是使用以下代码片段完成的:
import com.ibm.websphere.security.auth.WSSubject;
import com.ibm.ws.security.core.ContextManagerFactory;
import com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl;
public class SecurityConfigJaasWasImpl implements ISecurityConfig {
public Object doAsWithoutPwd(String user, String[] roles, final ISecuredCode code) throws Exception {
final String mName ="doAs(String, String[], ISecuredCode)";
Object ret = null;
try {
if (code != null) {
ret = WSSubject.doAs(ContextManagerFactory.getInstance().login("REALM", user), new PrivilegedExceptionAction() {
/* (non-Javadoc)
* @see java.security.PrivilegedExceptionAction#run()
*/
public Object run() throws Exception {
return code.run();
}
});
}
} catch (LoginException e) {
throw new SecurityConfigException("Error login user " + user);
}
}
不幸的是,Liberty中没有类ContextManagerFactory。 使用自由配置文件进行编程登录的所有示例都使用WSCallbackHandlerImpl来执行Jaas登录。但为此我需要知道用户的密码。
是否有可能在自由配置文件中执行与我的WAS 8.0代码类似的操作?
答案 0 :(得分:0)
将我们的应用程序从WAS-ND 7移植到Liberty时遇到了同样的问题。遗憾的是,如果没有用户密码,就无法在Liberty上执行程序化登录。我在这方面与IBM(25293,082,000)有一个开放的PMR,我被告知该功能正在考虑中#34;。我还有一个RFE开放: https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=100438