我們有一個自定義認證服務,它通過REST服務接受參數並提供json響應。根據響應我們重定向用戶。我希望將此Web服務與我們的新Alfresco Box集成。帶有定製認證web服務的Alfresco
有沒有辦法做自定義的基礎認證,而不是使用LDAP或內置的SSO插件?
我們有一個自定義認證服務,它通過REST服務接受參數並提供json響應。根據響應我們重定向用戶。我希望將此Web服務與我們的新Alfresco Box集成。帶有定製認證web服務的Alfresco
有沒有辦法做自定義的基礎認證,而不是使用LDAP或內置的SSO插件?
如果我理解正確的...
實現自定義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);
}
}
}
把你最好的圖書館 - 封裝 - ever.jar到的tomcat \的webapps \戶外\ WEB -INF \ lib
聲明您的自定義bean並將它注入到RemoteUserMapper bean中: 的tomcat \共享\類\戶外\推廣\認證定製的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>
我會盡力回覆你。 –
我的答案能解決你的問題嗎?如果您有任何其他問題,請告訴我們。 – wildloop
,我認爲,我們可以覆蓋份額側配置部分,但我需要檢查之謂也。在share-config.xml文件中檢查此節。 –