WorkFront/AtTask API认证异常:调用登录接口获会话ID时提示未登录
这个矛盾的情况其实是AtTask(现在更名Workfront)API的常见踩坑点,我来帮你梳理几个最可能的原因:
请求方法错误:AtTask的登录接口默认要求使用
POST请求,如果你用了GET方式直接在URL里拼接账号密码,系统会把这个请求判定为普通的未授权访问,自然弹出未登录提示。正确的做法是改用POST,把username和password放在请求体(或指定参数位置)里,而且明文在URL传密码本身也存在安全风险。API路径或版本不匹配:你调用的是
v9.0版本的接口,部分旧版AtTask部署可能对登录接口的路径有特定要求,比如需要确保实例域名正确(格式类似your-company.attask.com/attask/api/v9.0/login),或者某些版本的登录接口路径有细微差异。如果路径识别错误,系统会把这个请求当成普通接口访问,而非登录认证请求。CSRF保护拦截:很多AtTask实例开启了CSRF防护机制,如果你直接发起登录请求却没有携带CSRF Token,系统会拒绝该请求并返回未登录。这种情况下,你需要先发送一个
GET请求到登录页面或初始化接口,获取到CSRF Token后,再在POST登录请求的请求头或表单参数中带上这个Token。实例启用了SSO单点登录:如果你的企业AtTask部署启用了SSO,普通的用户名密码登录接口会被禁用,必须通过SSO流程完成认证才能获取会话ID。这种情况建议联系管理员确认是否开启了SSO,若属实则需要走对应的单点登录流程,而非直接调用这个
login接口。
内容的提问来源于stack exchange,提问作者Mars7272

