最近又开始研究IBM BPM产品啦~项目没开始之前在梳理相关知识,突然想到一个问题之前没有完美解决,或者使用其他方案绕过。所以想在twt里发个问题请教下知道的大神~
IBM 官方knowledgecenter是这么描述的:
要防御跨站点请求伪造攻击,IBM® BPM Standard REST API 操作需要对每个请求设置 HTTP 头 BPMCSRFToken。
客户机应用程序必须通过对类似于以下示例的 JSON 主体来调用 POST /bpm/system/login REST API,从而获取必需的令牌。
{
"refresh-groups": false,
"requested-lifetime": 7200
}
其中,将 refresh-groups 属性的值设置为 false 可避免与更新调用用户的组成员资格相关联的开销,requested-lifetime 是令牌有效的秒数。如果在请求中未指定 requested-lifetime,那么将使用缺省值 7200 秒,这是允许的最大值。
令牌将以字符串形式返回在响应对象的 csrf_token 属性中。对 IBM BPM Standard REST API 操作的每个调用必须在 HTTP 头 BPMCSRFToken 中包含有效的令牌。
任何尝试调用具有到期令牌的 IBM BPM Standard REST API 都将失败,响应中将返回 HTTP 响应代码 403 和 error_number CWTBG0651E,指示无法验证令牌并且必须更新令牌。要检索新令牌,客户机应用程序必须重新调用 /bpm/system/login API。 然后,客户机应用程序使用新令牌重新提交失败的请求。
问题:所以我如果想从外部调用rest api获取流程或者任务相关信息的话,需要先post 上面说的这个rest api,从返回对象中获取csrf_token,然后拿这个值放在自己的rest请求头中发起新的请求,但是我尝试了很多次去尝试这个rest,使用post方式,但一直没成功,详见下图: