缺少使用SAP Netweaver Gateway的CSRF令牌Android应用程序

时间:2015-01-26 09:52:11

标签: android odata sap csrf

我正在做一个Android应用程序,它在java中使用来自SAP Gateway的OData。在这一刻,我能够从网关检索数据,但是当我想要更新或创建某些内容时,会发生错误,说出"预期状态正常或没有内容" ....我在互联网上阅读我需要在GET中检索CSRF令牌并在post和put操作上设置它....如何在Android应用程序中从SAP Gateway使用OData并使用OData4j?我创建消费者的代码是:

            ODataConsumer consumer = ODataConsumers.create(serviceUrl);
            ODataConsumer.Builder builder = ODataConsumers.newBuilder(serviceUrl);
            builder.setClientBehaviors(new BasicAuthenticationBehavior("myuser", "mypass")); 
            consumer = builder.build();

就像你可以看到的那样,我有基本的身份验证,但却错过了csrf令牌......

我希望你能帮助我。

非常感谢,

博尔哈。

2 个答案:

答案 0 :(得分:0)

设置builder对象的客户端行为时,传递参数BasicAuthenticationBehavior对象,传递新的SAPCSRFBehaviour对象..

builder.setClientBehaviors(new BasicAuthenticationBehavior(serviceLocation.getUserName(), serviceLocation.getPassword()), new SAPCSRFBehaviour());

How to handle CSRF tokens while consuming Gateway services using odata4j

答案 1 :(得分:0)

你需要首先使用标头集来调用odata服务来获取令牌。 然后使用令牌进行调用。

**request = request.header("X-CSRF-Token", "Fetch")**  

如果交叉脚本攻击令牌使用处于活动状态,则默认情况下,您必须执行此调用 第一

使用getway测试调用工具或执行ODATA调用的任何正在运行的UI5应用程序,并跟踪您将看到发送令牌请求的调用。