UnboundID와 관련하여 도움이 필요합니다. 나는 그것이 훌륭한 선택이라고 들었지 만, 나는 그것에 익숙하지 않다.UnboundID로 DN 및 비밀번호를 얻는 방법
그래서 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;
}
}
감사합니다!
사람들의 암호를 잊어 버리려고합니까? – pap
아니요, 사람들이 권한이 있는지 아닌지 확인하는 웹 서비스에 넣으려면 사용자 이름과 암호가 필요합니다. – Roux
그러나 그게 바로 LDAP 서버의 용도입니다! 귀하의 질문은 아직 이해가되지 않습니다. – EJP