【问题标题】:Alfresco with custom authentication webservice具有自定义身份验证 Web 服务的 Alfresco
【发布时间】:2016-09-26 05:49:36
【问题描述】:

我们有一个自定义身份验证服务,它通过 REST 服务接受参数并提供 json 响应。根据响应,我们重定向用户。我希望将此网络服务与我们的新 Alfresco Box 集成。

有没有办法进行自定义基本身份验证,而不是使用 LDAP 或内置 SSO 插件?

【问题讨论】:

  • 我认为,我们可以覆盖共享端的配置部分,但我也需要检查一下。在 share-config.xml 文件中检查此部分

标签: rest authentication alfresco


【解决方案1】:

如果我理解正确的话……

  1. 实现您的自定义remote user mapper

    package best.package.ever;
    import org.alfresco.repo.security.authentication.external.DefaultRemoteUserMapper;
    
    public class CustomRemoteUserMapper extends DefaultRemoteUserMapper {
        public boolean canHandle(HttpServletRequest request) {
            return true; // TODO
        }   
        public String getTrustedUserId(HttpServletRequest request) {
            // TODO: validate & authorize... e.g. based on trusted Json Web Token
            return "trusted.user.id"; // TODO
        }
        public String getRemoteUser(HttpServletRequest request) {
            if (canHandle(request)) {
                return getTrustedUserId(request);
            } else {
                return super.getRemoteUser(request);
            }
        }
    }
    
  2. 将你的库 best-package-ever.jar 放入 tomcat\webapps\alfresco\WEB-INF\lib

  3. 声明您的自定义 bean 并将其注入 RemoteUserMapper bean:tomcat\shared\classes\alfresco\extension\authentication-custom-context.xml

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
    <beans> 
        <bean id="customRemoteUserMapper" class="best.package.ever.CustomRemoteUserMapper">
            <property name="personService" ref="PersonService"/>
            <property name="authorityService" ref="AuthorityService" />
        </bean>
        <bean id="RemoteUserMapper" class="org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory">
            <property name="applicationContextManager">
                <ref bean="Authentication" />
            </property>
            <property name="interfaces">
                <list>
                    <value>org.alfresco.repo.security.authentication.external.RemoteUserMapper</value>
                    <value>org.alfresco.repo.management.subsystems.ActivateableBean</value>
                </list>
            </property>
            <property name="sourceBeanName">
                <value>customRemoteUserMapper</value> <!-- extending remoteUserMapper -->
            </property>
        </bean>
    </beans>
    

【讨论】:

  • 我会尽力回复你。
  • 我的回答能解决你的问题吗?如果您有任何其他问题,请告诉我们。
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 2011-08-26
  • 2015-03-22
  • 2020-09-19
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多