cancel
Showing results for 
Search instead for 
Did you mean: 

Usuarios externos en Alfresco y SSO passthru

cesarista
World-Class Innovator
World-Class Innovator
Hola:

Tengo una cadena de autenticacion del tipo:

<pre>
authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1Smiley Tongueassthru,ldap1:ldap-ad
</pre>

y dos conjuntos de usuarios, uno en Alfresco y otro en el directorio activo (AD), que sincronizo via LDAP. Hasta ahi va todo bien.

Me puedo loguear sin problema con los usuarios correspondientes y puedo administrar los usuarios "externos" con Alfresco desde su interfaz.

Cuando activo el SSO para los usuarios internos (AD) del AD veo que:
- Necesito que passthru sea el primero en la cadena autenticacion (mutable) –> y el SSO de usuarios internos funciona.
- El otro conjunto de usuarios "externos" no se autentica (?).
- Ademas no puedo administrarlos porque ya no es el subsistema mutable.

¿ Tiene esto sentido ? ¿ Puedo tener un conjunto de usuarios externos gestionados y administrados en Alfresco, y tener SSO de red contra el AD ?

Un saludo.

–C.
44 REPLIES 44

cesarista
World-Class Innovator
World-Class Innovator

Gracias

Saludos.

--C.

Gracias Angel y a los demás por vuestras respuestas tan tempranas.

Voy a intentar verificar si en mi instancia de explotación está igual configurado el authetication.chain...

De todas formas, no entiendo porqué a veces salta un error 500, creemos que es por la parte de la traza donde me dice "socket closed" que no sé a que es debido... ¿se os ocurre algo?

Gracias.

Pueden producirse errores 500 cuando el usuario cancela una petición en Share.

Hyland Developer Evangelist

Entiendo Angel, pero la terea en la que nosotros estamos teniendo problema es a la hora de ejecutar unos webservices en modo autmático, se van generando solos como jobs...

Te dejo un trozo del log, en el penúltimo "caused by" sale lo del closed socket:

19:00:31,785  DEBUG [security.authentication.AuthenticationComponentImpl] Authenticating user "userPentaho"
19:00:31,790  DEBUG [security.authentication.AuthenticationComponentImpl] Setting the current user to "userPentaho"
19:00:31,791  DEBUG [security.authentication.AuthenticationComponentImpl] User "userPentaho" authenticated successfully
20:00:11,062  DEBUG [authentication.ldap.LDAPAuthenticationComponentImpl] Authenticating user "userPentaho"
20:00:41,094  DEBUG [authentication.ldap.LDAPAuthenticationComponentImpl] Failed to authenticate user "userPentaho"
org.alfresco.error.AlfrescoRuntimeException: 0722397392 Failed to resolve user ID: userPentaho
    at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.resolveDistinguishedName(LDAPUserRegistry.java:921)
    at org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl.authenticateImpl(LDAPAuthenticationComponentImpl.java:113)
    at org.alfresco.repo.security.authentication.AbstractAuthenticationComponent.authenticate(AbstractAuthenticationComponent.java:158)
    at org.alfresco.repo.security.authentication.AuthenticationServiceImpl.authenticate(AuthenticationServiceImpl.java:65)
    at org.alfresco.repo.security.authentication.AbstractChainingAuthenticationService.authenticate(AbstractChainingAuthenticationService.java:180)
    at sun.reflect.GeneratedMethodAccessor777.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:44)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.alfresco.repo.audit.AuditMethodInterceptor.proceedWithAudit(AuditMethodInterceptor.java:232)
    at org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInterceptor.java:199)
    at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:152)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy56.authenticate(Unknown Source)
    at org.alfresco.repo.web.scripts.servlet.BasicHttpAuthenticatorFactory$BasicHttpAuthenticator.authenticate(BasicHttpAuthenticatorFactory.java:176)
    at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:302)
    at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:352)
    at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
    at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)
Caused by: javax.naming.PartialResultException [Root exception is javax.naming.ServiceUnavailableException: chap.junta-andalucia.es:389; socket closed; remaining name '']
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:224)
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreReferrals(LdapNamingEnumeration.java:362)
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:208)
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171)
    at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.resolveDistinguishedName(LDAPUserRegistry.java:913)
    ... 43 more
Caused by: javax.naming.ServiceUnavailableException: chap.junta-andalucia.es:389; socket closed; remaining name ''
    at com.sun.jndi.ldap.Connection.readReply(Connection.java:419)
    at com.sun.jndi.ldap.LdapClient.getSearchReply(LdapClient.java:611)
    at com.sun.jndi.ldap.LdapClient.search(LdapClient.java:534)
    at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1962)
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1824)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338)
    at com.sun.jndi.ldap.LdapReferralContext.search(LdapReferralContext.java:639)
    at com.sun.jndi.ldap.LdapSearchEnumeration.getReferredResults(LdapSearchEnumeration.java:169)
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreReferrals(LdapNamingEnumeration.java:345)
    at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:208)
    ... 47 more

Gracias de antemano.

Saludos. Angel.

¿Cómo hacéis esa autenticación para los webservices? 

Este error se produce cuando intentan validar el usuario "userPentaho" contra el LDAP, probablemente porque no ha superado la primera autenticación AlfrescoNTML.

Hyland Developer Evangelist

Pues mira Angel, la autenticación la hacemos a través de Pentaho, que lo que hace es invocar a una URL http y logearse, y pasados unos segundos salta el error 500 ese.

Tampoco es porque devuelva una salida muy grande.

Es que debería hacer que si en LDAp no lo encuentra o casca, que valide con Alfresco ¿no? aunque eso sería un parche, no sabemos porqué falla.

Lo primero de todo: aseguraos de que tenéis bien configurado el "authentication.chain". Lo que hace es, precisamente, validar contra el siguiente subsistema de autenticación en caso de que falle uno de ellos.

Hyland Developer Evangelist

Nuestro authetication.chain es el siguiente en Explotación (DONDE FALLA):

authentication.chain=ldap-ad1:ldap-ad,alfrescoNtlm1:alfrescoNtlm

y en Pruebas es (NO FALLA):

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap-ad1:ldap-ad

Parece que está claro que cambiando el orden se arreglaría, pero el caso es que no debería cascar como casca ¿no? debería autenticar por LDAP y si no, pues que que lo haga por Alfresco, pero sin que devuelva ese error 500 ¿no?

En producción está funcionando de la misma manera que en Pruebas. El error aparece porque tenéis el nivel de DEBUG para el log de autenticación, pero el proceso debe estar funcionando de la misma manera.

Hyland Developer Evangelist

Creo que no te he entendido Angel, el pruebas y producción están cambiados, no influye el orden?

Falla aleatoriamente en Producción que salta ese error 500. El error que nos devuelve pentaho es:

2017/08/22 10:00:25 - HTTP - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : java.io.IOException: Server returned HTTP response code: 500 for URL: http://alfrescoexp01.chap.junta-andalucia.es/alfresco/service/api/audit/query/alfresco-access?verbos...