yona-projects/yona

ldap 에러메시지

asklsd opened this issue · 3 comments

항상 yona를 감사하게 사용하고 있습니다.
인증방법으로 ldap를 이용중입니다.
아래와 같은 오류가 지속적으로 발생하고 있는데 사용상에 문제는 없어보입니다만,
혹 side effect가 있을까 하여 문의드립니다.
사용중인 버전은
yona v1.16.0
입니다

오류 로그

[error] application - Cannot connect to ldap server
yona_1  | [LDAP: error code 53 - unauthenticated bind (DN with no password) disallowed]
yona_1  | javax.naming.OperationNotSupportedException: [LDAP: error code 53 - unauthenticated bind (DN with no password) disallowed]
yona_1  |       at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3227)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3100)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2886)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2800)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
yona_1  |       at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
yona_1  |       at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
yona_1  |       at javax.naming.InitialContext.init(InitialContext.java:244)
yona_1  |       at javax.naming.InitialContext.<init>(InitialContext.java:216)
yona_1  |       at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
yona_1  |       at utils.LdapService.authenticate(LdapService.java:54)
yona_1  |       at controllers.UserApp.authenticateWithLdap(UserApp.java:1159)
yona_1  |       at utils.BasicAuthAction.authenticate(BasicAuthAction.java:106)
yona_1  |       at utils.BasicAuthAction.call(BasicAuthAction.java:117)
yona_1  |       at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82)
yona_1  |       at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
yona_1  |       at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40)
yona_1  |       at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:46)
yona_1  |       at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32)
yona_1  |       at scala.concurrent.impl.Future$.apply(Future.scala:31)
yona_1  |       at scala.concurrent.Future$.apply(Future.scala:485)
yona_1  |       at play.core.j.JavaAction$class.apply(JavaAction.scala:82)
yona_1  |       at play.core.Router$HandlerInvokerFactory$JavaActionInvokerFactory$$anon$15$$anon$1.apply(Router.scala:252)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130)
yona_1  |       at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:128)
yona_1  |       at scala.Option.map(Option.scala:145)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:128)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:121)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
yona_1  |       at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
yona_1  |       at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
yona_1  | javax.naming.OperationNotSupportedException: [LDAP: error code 53 - unauthenticated bind (DN with no password) disallowed]
yona_1  |       at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3227)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3100)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2886)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2800)
yona_1  |       at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
yona_1  |       at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
yona_1  |       at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
yona_1  |       at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
yona_1  |       at javax.naming.InitialContext.init(InitialContext.java:244)
yona_1  |       at javax.naming.InitialContext.<init>(InitialContext.java:216)
yona_1  |       at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
yona_1  |       at utils.LdapService.authenticate(LdapService.java:54)
yona_1  |       at controllers.UserApp.authenticateWithLdap(UserApp.java:1159)
yona_1  |       at utils.BasicAuthAction.authenticate(BasicAuthAction.java:106)
yona_1  |       at utils.BasicAuthAction.call(BasicAuthAction.java:117)
yona_1  |       at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82)
yona_1  |       at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
yona_1  |       at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40)
yona_1  |       at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:46)
yona_1  |       at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32)
yona_1  |       at scala.concurrent.impl.Future$.apply(Future.scala:31)
yona_1  |       at scala.concurrent.Future$.apply(Future.scala:485)
yona_1  |       at play.core.j.JavaAction$class.apply(JavaAction.scala:82)
yona_1  |       at play.core.Router$HandlerInvokerFactory$JavaActionInvokerFactory$$anon$15$$anon$1.apply(Router.scala:252)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130)
yona_1  |       at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:128)
yona_1  |       at scala.Option.map(Option.scala:145)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:128)
yona_1  |       at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:121)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496)
yona_1  |       at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
yona_1  |       at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
yona_1  |       at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
yona_1  |       at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
yona_1  |       at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

오류 메시지 자체는 LDAP 설정이 되어 있는데 password 가 누락되어서 연결이 안된다는 내용인데요
가입없이 LDAP 계정으로 로그인이 되나요?

@doortts 기존에 ldap로 로그인했던 사용자는 문제없이 로그인 됩니다. 추가적인 사용자에 대한 테스트 진행해보도록 하겠습니다.

cron으로 동작하는 스크립트에서 발생한 오류로 확인되었습니다.