如何通过单点登录将 Alfresco 与 Wordpress 集成?

Posted

技术标签:

【中文标题】如何通过单点登录将 Alfresco 与 Wordpress 集成?【英文标题】:How can I Integrate Alfresco with Wordpress by Single Sign On? 【发布时间】:2018-11-14 18:32:53 【问题描述】:

我正在尝试在 Wordpress 和 Alfresco 之间配置单点登录,因此我在我的 wordpress 管理面板上添加了 WordPress OAuth2 Provider Plugin。 wordpress plugin

我创建了一个客户端并将重定向 uri 插入到我的 alfresco,该插件给了我一个密钥和一个秘密。现在,登录wordpress后,我去我的博客,点击链接去alfresco,但是页面有url:

http://localhost:8080/share/page/repository?oauth=authorize&response_type=code&client_id=**************&client_secret=**************&redirect_uri=http%3A%2F%2Flocalhost%2F%3Fauth%3Dssoe

alfresco login

再次询问我的用户名和密码!如何配置 Alfresco,以便使用这些凭据进行记录?感谢任何想帮助我的人,并为我的英语不好感到抱歉。

【问题讨论】:

【参考方案1】:

Alfresco 包括多个身份验证系统,包括 Alfresco 数据库、Active Directory、LDAP、Kerberos、外部,并且可以设置为使用其中一个或它们的组合进行身份验证。通常,这些身份验证系统涵盖了所需的大多数身份验证组合和机制。

您还可以使用 alfresco 自定义身份验证子系统, 在这种情况下,当您想要验证用户身份时,您需要传递条件, 这是一些用于身份验证的 java 类的 sn-p

     package org.alfresco.tutorial.repo.security.authentication;

import net.sf.acegisecurity.Authentication;

import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.security.authentication.AbstractAuthenticationComponent;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class CustomAuthenticationComponentImpl extends AbstractAuthenticationComponent 
    private static final Log LOG = LogFactory.getLog(CustomAuthenticationComponentImpl.class);

   /**
    * Some custom properties that could be used to inject a remote login server hostname and port.
    * Not used at the moment but demonstrates property injection in custom authentication component.
    */
    private String remoteAuthenticatorHostname;
    private String remoteAuthenticatorPort;

    public void setRemoteAuthenticatorHostname(String remoteAuthenticatorHostname) 
        this.remoteAuthenticatorHostname = remoteAuthenticatorHostname;
    

    public void setRemoteAuthenticatorPort(String remoteAuthenticatorPort) 
        this.remoteAuthenticatorPort = remoteAuthenticatorPort;
    

    public void authenticateImpl(String userName, char[] password) throws AuthenticationException 
        if (LOG.isDebugEnabled()) 
           LOG.debug("Login request(" + remoteAuthenticatorHostname + ":" + remoteAuthenticatorPort +
           ") : [userName=" + userName + "][password=" + String.valueOf(password) + "]");
        

        // Do your custom authentication here, and then set the current user (in this example we are only allowing
        // john to authenticate successfully, and we don't check pwd)
        // You would typically connect to the remote authentication mechanism to verify username/pwd...
        if (StringUtils.equals(userName, "john") || isGuestUserName(userName) ||
                getDefaultAdministratorUserNames().contains(userName)) 
            setCurrentUser(userName);
         else 
            String msg = "Login request: username not recognized [userName=" + userName + "]";
            LOG.error(msg);
            throw new AuthenticationException(msg);
        
    

    /**
     * The default is not to support token base authentication
     */
    public Authentication authenticate(Authentication token) throws AuthenticationException 
        throw new AlfrescoRuntimeException("Authentication via token not supported");
    

    /**
     * This authentication component implementation allows guest login
     * @return
     */
    @Override
    protected boolean implementationAllowsGuestLogin() 
        return true;
    

详情请参考documentation

【讨论】:

【参考方案2】:

为外部身份验证配置 Alfresco 可能更容易,然后在 Alfresco 前面添加一个可以处理您的 OAuth2 令牌的代理。 Alfresco 本身并不支持 OAuth2。因此,除非您使用 External,否则您必须自己编写身份验证代码。

【讨论】:

以上是关于如何通过单点登录将 Alfresco 与 Wordpress 集成?的主要内容,如果未能解决你的问题,请参考以下文章

如何将露天用户与 AD 同步

***Error 应用 Alfresco Rule 将 Word Doc 转换为 PDF

来宾用户 Alfresco / 无需登录即可访问

Alfresco 附加的 word 文档无法使用 ms office 在线编辑

如何将BI 工具与业务系统进行单点登录对接,实现用户权限通用

单点登录JWT与Spring Security OAuth