如何使用.Net从客户端的REST调用中获取/提供CSRF令牌?

时间:2017-09-15 15:08:51

标签: c# .net rest csrf

我尝试进行REST调用(SAP Netweaver API方法)。 API要求随呼叫一起发送CSRF令牌。

手动使用REST客户端时,我可以发送获取令牌的请求(使用包含标头"X-CSRF-Token: Fetch"的HTTP GET和另一个包含用于基本身份验证的编码凭据的请求(&#34;授权:基本) &#34)。 响应包含带有CSRF令牌的标头。 在第二个调用中,我在标头"X-CSRF-Token: <token>"中提供了令牌,并提供了相同的编码凭据。 第二次调用成功,我得到了其余调用的结果。

现在,我想以编程方式调用相同的API。

  
      
  1. 我是否需要执行此往返才能获得令牌,或者是否有办法自动执行此操作?
  2.   
  3. 如果是这样,我如何检测到我必须获取并发送令牌? (是否在服务器端启用了AntiForgeryToken处理?)
  4.   
  5. 如何实际获取令牌并将其添加到REST呼叫中?
  6.   

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当您使用令牌(JWT / CSRF令牌)时,您需要在第一时间从响应头读取。然后,您可以使用SessionStorage来存储它。在向API发出任何请求之前,您需要手动将JWT / CSRF令牌添加到Http Headers。在angular中,你可以使用http拦截器,在一个地方添加你的逻辑。所以你不需要在多个地方添加/检索