使用する
ABAPサーバーへのRESTクライアントの変更要求(PUT、POST、およびDELETE)で、クライアントはCSRF(Cross-Site Request Forgery)トークンを提供する必要があります。
このようなトークンは、ABAPサーバーへの以前のサービスコールを介して取得できます。このため、最初に変更のない呼び出し(GET、HEAD、OPTIONS)で、クライアントはHTTPヘッダーX-CSRF-Tokenを値Fetchに設定して、このトークンを取得する必要があります。CSRFトークンは、同じヘッダーでABAPサーバーによって返され、ヘッダーX-CSRF-Tokenを使用して後続のサーバー状態変更呼び出しに使用できます。
このヘッダーがサーバーの状態を変更するREST呼び出しに存在しない場合、サーバーはHTTP 403( “Forbidden”)リターンコードで応答し、HTTPヘッダーは “Required”に設定され、エラーテキスト(たとえば、 “CSRF token検証に失敗しました」)が返されます。
プロセス
これは、RESTクライアントでCSRFトークンヘッダーフェッチリクエストを設定するためのコードフラグメントです。
フェッチ値を使用して呼び出しが正常に応答すると、返されたCSRFトークンは、後で状態を変更するREST要求のために保持できます。これは、成功したサーバー応答からCSRFトークンを読み取るためのコードフラグメントです。
すぐに出てくる質問:CSRFトークンを今どのくらい使用できますか?
CSRFトークンの有効性は、ABAPコンポーネントSAP_BASISのリリースと、セキュリティセッション管理(SAPクライアントの粒度でトランザクションSICF_SESSIONSを介して制御される)の有効化に依存します。
-
リリース<7.03/7.31またはセキュリティセッション管理が非アクティブです:独自のCSRF Cookieが生成され(sap-XSRF_ <SystemID> _ <SAPClient>)、このCSRFトークンは24時間(86400秒)有効です。
-
リリース>=7.03 / 7.31、有効性はセキュリティセッションにバインドされます。これは、システムパラメータhttp / security_session_timeout値に依存します(このパラメータの詳細については、トランザクションRZ11を参照してください)。これらのリリースでは、デフォルトでセキュリティセッション管理がアクティブになっています。