使用Atlassian-crowd-client与Sails.js对接Crowd认证失败求助
排查Crowd身份认证返回"Invalid Response from Crowd, expecting JSON"错误
我帮你分析下这个问题,核心原因是你的请求目标返回的不是JSON格式数据,结合你的代码来看,主要有两个关键问题:
1. BaseUrl配置错误
你现在填的baseUrl: 'http://my-host/crowd/console/login.action'是Crowd的登录页面URL,这个页面返回的是HTML页面,不是API接口需要的JSON响应。Atlassian Crowd的API base URL应该指向它的REST接口根路径,通常格式是:http://your-crowd-domain/crowd/rest/usermanagement/latest/
(如果是Crowd 3.x+版本,也可能是/crowd/rest/开头,具体可以参考Crowd的API文档确认)
2. 请求头配置格式错误
你代码里直接把"Content-Type":"application/jso..."写在初始化参数里是不对的,这个应该放在headers字段下,而且内容要完整写成application/json。
修正后的示例代码
var atlassianCrowdClient = require('atlassian-crowd-client'); var crowd = new atlassianCrowdClient({ baseUrl: 'http://my-host/crowd/rest/usermanagement/latest/', // 改成正确的API根路径 application: { name: 'app-name', password: 'app-password' }, headers: { // 正确配置请求头 "Content-Type": "application/json" } });
额外排查点
- 确认你的Crowd应用账号(
app-name和app-password)已经在Crowd后台正确配置,并且拥有对应的API访问权限 - 测试baseUrl是否能正常访问:直接在浏览器或Postman里访问这个URL,应该返回JSON格式的API说明或响应,而不是HTML页面
- 检查网络连接,确保你的Sails.js服务能正常访问Crowd服务器
内容的提问来源于stack exchange,提问作者fariba.j
相关产品推荐
相关产品推荐

