<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Share Custom Authentication in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300668#M253798</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Dear colleagues, could you kindly help me with the problem described here.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have to develop Custom Authentication method, so that users can log in the system in two ways: enter their UserName or their personal number (Custom Person Attribute).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First of all, I set authentication.chain in &amp;lt;strong&amp;gt;alfresco-global.properties&amp;lt;/strong&amp;gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;authentication.chainalfrescoNtlm1:alfrescoNtlm,CustomAuthentication:CustomAuthentication &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After that I implemented CustomAuthentication class as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-java line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;public class CustomAuthentication extends AbstractAuthenticationComponent&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void authenticateImpl(String userName, char[] password) throws AuthenticationException&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userName = GetUserNameByPersonalNumber(userName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (userName != null)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setCurrentUser(userName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new AuthenticationException("User is not found!");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private String GetUserNameByPersonalNumber(String personNumber)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//For example…&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return "myUserName";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Authentication authenticate(Authentication token) throws AuthenticationException&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return token;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected boolean implementationAllowsGuestLogin()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can see that the user is autheticated in Repo, but what can I do with Share? Each time a system error appears (see below):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-java line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;2016-06-13 15:11:29,964 ERROR [org.alfresco.web.site] [http-apr-8080-exec-3] org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.extensions.surf.exception.UserFactoryException: Unable to retrieve user from repository&lt;BR /&gt;org.springframework.extensions.surf.exception.UserFactoryException: Unable to retrieve user from repository&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.support.AlfrescoUserFactory.loadUser(AlfrescoUserFactory.java:194)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.SlingshotUserFactory.loadUser(SlingshotUserFactory.java:135)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:182)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:100)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.RequestContextUtil.initialiseUser(RequestContextUtil.java:259)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.RequestContextUtil.populateRequestContext(RequestContextUtil.java:182)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.RequestContextUtil.populateRequestContext(RequestContextUtil.java:137)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.populateRequestContext(AbstractWebFrameworkView.java:384)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:294)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1216)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1001)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:182)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.CSRFFilter.doFilter(CSRFFilter.java:315)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:447)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Unknown Source)&lt;BR /&gt;Caused by: org.springframework.extensions.surf.exception.UserFactoryException: Unable to create user - failed to retrieve user metadata: &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.support.AlfrescoUserFactory.loadUser(AlfrescoUserFactory.java:183)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 51 more&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I guess, my current task is quite close to UserAutentication by email or login. Unfortunatelely, I haven't found Source Code with any examples.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 Jun 2016 13:00:17 GMT</pubDate>
    <dc:creator>soloff</dc:creator>
    <dc:date>2016-06-13T13:00:17Z</dc:date>
    <item>
      <title>Share Custom Authentication</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300668#M253798</link>
      <description>Dear colleagues, could you kindly help me with the problem described here.I have to develop Custom Authentication method, so that users can log in the system in two ways: enter their UserName or their personal number (Custom Person Attribute).First of all, I set authentication.chain in &amp;lt;strong&amp;gt;</description>
      <pubDate>Mon, 13 Jun 2016 13:00:17 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300668#M253798</guid>
      <dc:creator>soloff</dc:creator>
      <dc:date>2016-06-13T13:00:17Z</dc:date>
    </item>
    <item>
      <title>Re: Share Custom Authentication</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300669#M253799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Both the &amp;lt;a href="&lt;/SPAN&gt;&lt;A href="https://github.com/Alfresco/share/blob/fab09705778b71d4c424279ab3d433b93fdb74ce/share/src/main/java/org/alfresco/web/site/servlet/SlingshotLoginController.java" rel="nofollow noopener noreferrer"&gt;https://github.com/Alfresco/share/blob/fab09705778b71d4c424279ab3d433b93fdb74ce/share/src/main/java/org/alfresco/web/site/servlet/SlingshotLoginController.java&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;SlingshotLoginController&amp;lt;/a&amp;gt; and the &amp;lt;a href="&lt;/SPAN&gt;&lt;A href="https://github.com/Alfresco/share/blob/fab09705778b71d4c424279ab3d433b93fdb74ce/share/src/main/java/org/alfresco/web/site/SlingshotUserFactory.java" rel="nofollow noopener noreferrer"&gt;https://github.com/Alfresco/share/blob/fab09705778b71d4c424279ab3d433b93fdb74ce/share/src/main/java/org/alfresco/web/site/SlingshotUserFactory.java&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;SlingshotUserFactory&amp;lt;/a&amp;gt; use the name provided in the login UI as the user name. If that name now can be a multitude of things, e.g. an email address or personal number, then these components need to be adapted or replaced in Share to work with the new authentication methods. Essentially they should no longer trust the name provided and strive to load the correct information from the Repository-backend in order to execute the code they need to execute.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Axel&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jun 2016 08:12:38 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300669#M253799</guid>
      <dc:creator>afaust</dc:creator>
      <dc:date>2016-06-14T08:12:38Z</dc:date>
    </item>
    <item>
      <title>Re: Share Custom Authentication</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300670#M253800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you very much for your help!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So, I have overrided &amp;lt;strong&amp;gt;SlingshotLoginController&amp;lt;/strong&amp;gt; in this way&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;java&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;public class CustomLoginController extends SlingshotLoginController &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; …&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean authenticated = this.userFactory.authenticate(request, username, password);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (authenticated)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;username = this.resolveLoginToUserName(username);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthenticationUtil.login(request, response, username, false, webFrameworkConfiguration.isLoginCookiesEnabled());&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success = true;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; …&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String resolveLoginToUserName(String login) throws JSONException&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String URL = URLEncoder.encodeUri(String.format("/api/user/logintousername?login=%s", login));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response response = this.scriptRemote.call(URL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSONObject result = new JSONObject(response.getResponse());&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return result.getString("username");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/java&amp;gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jun 2016 15:18:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-custom-authentication/m-p/300670#M253800</guid>
      <dc:creator>soloff</dc:creator>
      <dc:date>2016-06-20T15:18:00Z</dc:date>
    </item>
  </channel>
</rss>

