在Eclipse中执行Maven构建项目时出现Solr 403错误求助
首先来看你遇到的错误日志:
2018-05-23 13:28:45,098 ERROR [solr.tracker.AbstractTracker] [SolrTrackerScheduler_Worker-26] Tracking failed org.alfresco.error.AlfrescoRuntimeException: 04232365 GetModelsDiff return status is 403 at org.alfresco.solr.client.SOLRAPIClient.getModelsDiff(SOLRAPIClient.java:1157) at org.alfresco.solr.tracker.ModelTracker.trackModelsImpl(ModelTracker.java:249) at org.alfresco.solr.tracker.ModelTracker.trackModels(ModelTracker.java:207) at org.alfresco.solr.tracker.ModelTracker.doTrack(ModelTracker.java:167) at org.alfresco.solr.tracker.AbstractTracker.track(AbstractTracker.java:185) at org.alfresco.solr.tracker.TrackerJob.execute(TrackerJob.java:47) at org.quartz.core.JobRunShell.run(JobRunShell.java:216) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:563)
这个403 Forbidden错误本质是Solr节点向Alfresco Repository请求模型差异时,没有通过权限验证,下面是几个经过验证的解决步骤:
检查Solr配置文件的认证参数
找到Solr核心下的alfresco.properties文件(通常在solrhome/cores/alfresco/conf路径),确认以下参数和Alfresco Repository的配置完全一致:alfresco.baseUrl=http://localhost:8080/alfresco alfresco.user=admin alfresco.password=admin注意如果Alfresco开启了HTTPS,要把
baseUrl改成对应的HTTPS地址,同时确保Solr信任Alfresco的SSL证书。确认Alfresco的CSRF保护设置
如果Alfresco启用了CSRF保护(新版默认开启),需要在Solr的配置里添加CSRF token支持。可以在alfresco.properties里加入:solr.alfresco.csrf.enabled=true若仅用于测试,可临时关闭Alfresco的CSRF保护(生产环境不建议):修改Alfresco的
web.xml,注释掉CsrfFilter的配置段。检查Maven构建时的环境变量和配置
如果你通过Maven启动Solr或Alfresco,确保构建脚本传递的认证参数正确。比如在Maven的pom.xml中,Alfresco插件的配置要和实际环境匹配:<plugin> <groupId>org.alfresco.maven.plugin</groupId> <artifactId>alfresco-maven-plugin</artifactId> <configuration> <alfrescoHost>localhost</alfrescoHost> <alfrescoPort>8080</alfrescoPort> <alfrescoUser>admin</alfrescoUser> <alfrescoPassword>admin</alfrescoPassword> </configuration> </plugin>验证Alfresco Repository的访问权限
手动用浏览器或curl请求http://localhost:8080/alfresco/s/api/metadata?method=GetModelsDiff,输入配置的用户名和密码,看是否能正常返回数据。如果手动请求也返回403,说明是Alfresco这边的权限配置问题,需要检查admin用户的权限,或是否有防火墙/反向代理拦截了请求。
内容的提问来源于stack exchange,提问作者karuppasamy

