UnboundID に関するヘルプが必要です。いい選択だとは聞いていましたが、あまり慣れていません。
そのため、LDAP リスナーを作成する必要があります。このリスナーでは、(たとえば LDAP ブラウザーから) バインド要求をキャッチできるはずです。DN とパスワードを取得する方法を知りたいです。LDAP リスナーのコードは次のとおりです。
public ResultCode CreateLdapServer () throws LDAPException {
CannedResponseRequestHandler requestHandler = new CannedResponseRequestHandler();
LDAPListenerConfig config =
new LDAPListenerConfig(4243, requestHandler);
try
{
config.setListenAddress(
InetAddress.getByName("localhost"));
}
catch (final Exception e)
{
System.err.println("Unable to create the listen server.");
return ResultCode.PARAM_ERROR;
}
listener = new LDAPListener(config);
try
{
listener.startListening();
System.out.println("Serveur is listening ...");
}
catch (final Exception e)
{
System.err.println("Unable to start listening.");
return ResultCode.LOCAL_ERROR;
}
return ResultCode.SUCCESS;
}
public static void main(String[] args) throws LDAPException {
MyConnection connect = new MyConnection();
connect.CreateLdapServer();
}
多くの UnboundID ドキュメントを読みましたが、必要なものの簡単な例が見つかりません。
また、CannedResponseRequestHandler の有用性についてはよくわかりません。必要なものは十分ですか?
別の質問: よくわかりませんが、サーバーがリッスンしていない、または何もキャッチしていないような気がします (LDAP ブラウザーに接続しても何も起こりませんでした)。任意のアイデア/提案?
ありがとう、良い一日を!
編集: xhochy のおかげで、パスワードとユーザー名をキャッチできました。彼が言ったように、LDAPListenerRequestyHandler をサブクラス化してオーバーライドし、最初に newInstance、次に ProcessBindRequest としました。これがコードです (完全ではなく、まだ始まったばかりです)。
パブリック クラス MyConnection {
private LDAPListener listener;
public MyConnection(){
}
public ResultCode CreateLdapServer() throws LDAPException {
MyLDAPListenerRequestHandler requestHandler = new MyLDAPListenerRequestHandler();
LDAPListenerConfig config =
new LDAPListenerConfig(4243, requestHandler);
try
{
config.setListenAddress(
InetAddress.getByName("localhost"));
}
catch (final Exception e)
{
System.err.println("Unable to create the listen server.");
return ResultCode.PARAM_ERROR;
}
listener = new LDAPListener(config);
try
{
listener.startListening();
System.out.println("Serveur is listening ...");
}
catch (IOException e)
{
System.err.println("Unable to start listening.");
return ResultCode.LOCAL_ERROR;
}
return ResultCode.SUCCESS;
}
public static void main(String[] args) throws LDAPException {
MyConnection connect = new MyConnection();
connect.CreateLdapServer();
}
}
次に LDAPListenerRequestHandler のサブクラス:
public class MyLDAPListenerRequestHandler extends LDAPListenerRequestHandler {
@Override
public LDAPListenerRequestHandler newInstance(
LDAPListenerClientConnection arg0) throws LDAPException {
System.out.println("New Instance.");
LDAPConnectionOptions option = new LDAPConnectionOptions();
LDAPConnection connection = new LDAPConnection(option, "yourIPadress", yourport);
System.out.println("Connected to : " + connection.getConnectedAddress()+ " " + connection.getConnectedPort());
return this;
}
@Override
public LDAPMessage processBindRequest(int arg0, BindRequestProtocolOp arg1,
List<Control> arg2) {
System.out.println(arg1.getBindDN());
System.out.println(arg1.getSimplePassword());
return null;
}
}
再度、感謝します !