繁体   English   中英

带有S / 4HANA Cloud SDK的REST:Tomee原型项目在POST / PUT / DELETE上返回禁止的403

[英]REST with S/4HANA Cloud SDK: Tomee archetype project returns 403 forbidden on POST/PUT/DELETE

我创建了一个S4SDK项目,

mvn archetype:generate -DarchetypeGroupId=com.sap.cloud.s4hana.archetypes \
  -DarchetypeArtifactId=scp-cf-tomee -DarchetypeVersion=LATEST

并且我将HelloWorldServlet修改为具有doPost方法,但根本无法获得POST请求。 我总是收到HTTP状态403禁止响应。

如何使用S / 4HANA Cloud SDK原型进行REST开发?

如果查看失败请求的响应标头,则可能会看到标头X-CSRF-Token: Required CSRF令牌可保护您的应用程序用户免受攻击,使其免受在您的应用程序中执行有害操作的攻击。

因此,任何状态更改操作(例如PUTPOST )都需要一个有效的CSRF令牌,以确保该操作确实是调用它的经过身份验证的用户想要的。 可以将CSRF令牌作为任何先前的无副作用请求(例如GET一部分进行提取。 只需将标头X-CSRF-Token: fetch到您的请求中,然后从响应标头X-CSRF-Token: abc123提取返回的值。 最后,确保将提取的值作为下一个修改请求的X-CSRF-Token: abc123标头发送。 然后一切都会按预期进行。

有关更多信息,您可以查询: http : //www2.hu-berlin.de/newlogic/docs/config/filter.html#CSRF_Prevention_Filter_for_REST_APIs/Basic_configuration_sample

S4SDK的默认安全配置包含一个跨站点请求伪造(CSRF)预防过滤器-对其进行注释以使REST API开发变得简单-但请注意CSRF问题以及CSRF与cookie的关系 -实质上确保在其中不使用cookie。添加以下注释之前和之后的REST应用程序:

<!-- disabled to make REST work - AUTHN/AUTHZ MUST NOT USE COOKIES!
<filter>
    <filter-name>RestCsrfPreventionFilter</filter-name>
    <filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>RestCsrfPreventionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
-->

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM