IBM Worklight を使用してモバイル・アプリケーションを開発していますが、認証に問題があります。Tivoli ディレクトリー・サーバーに対してユーザー資格情報を検証するために、カスタム・オーセンティケーターとカスタム・ログイン・モジュールを使用しています。
これは私が使用しているコードです。Worklight Studio で Java アプリケーション (メイン メソッドを持つクラス) のように実行すると機能しますが、Worklight アプリケーションのように (カスタム ログイン モジュールのログイン関数で) 実行すると機能します。命名例外を返し、jndi.20 を出力します
public boolean login(Map<String, Object> authenticationData) {
logger.info("SmaciLoginModule :: login");
try{
USERNAME = (String) authenticationData.get("username");
PASSWORD = (String) authenticationData.get("password");
String solicuser="uid="+USERNAME+",cn=users,dc=smaci,dc=ibm";
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://127.0.0.1:1389/");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, solicuser);
env.put(Context.SECURITY_CREDENTIALS, PASSWORD);
DirContext ctx = new InitialDirContext(env);
boolean result = ctx != null;
if(ctx != null)
ctx.close();
return result;
}catch (Exception e) {
throw new RuntimeException("Invalid credentials"+e.getMessage());
}
}
私の問題を解決できることを願っています。LDAP を使用した経験がありません。何か提案をいただければ幸いです。ありがとうございました!