ログインユーザーへのクライアント REST API 認証要求Issue Geneva リリース以降のクライアント REST API には、クロスサイトリクエストフォージェリ (CSRF) 攻撃を回避するためのセキュリティ設定があります。CSRF 攻撃は、悪意のある Web サイト、電子メール、ブログ、インスタントメッセージ、またはプログラムが、ユーザーの Web ブラウザに、ユーザーが現在認証されている信頼済みサイトでの不要な操作を実行させる攻撃です。 CSRF 攻撃に対するセキュリティ設定は、Geneva 以降のリリースにのみ含まれています。 症状 ユーザーが既にログインしている場合でも、認証ダイアログが表示されます。追加の認証要求を表示するには、次の手順を実行します。 アドミンとして Geneva のインスタンスにログインします。インスタンスで次の URL を開きます。 /api/now/table/incident?sysparm_query=active=true^ORDERBYDESCsys_updated_on^caller_id=javascript:gs.getUserID()^ORopened_by=javascript:gs.getUserID()&sysparm_display_value=true&sysparm_fields=number,short_description,description,sys_updated_on,closed_at,incident_state,opened_at,caller_id,state,sys_id,resolved_at&sysparm_limit=1&stamp=1454246237320 [キャンセル] をクリックすると、次のメッセージが返ってきます。 <response> <error> <message>User Not Authenticated</message> <detail>Required to provide Auth information</detail> </error> <status>failure</status> </response> Causeクライアント REST API には、CSRF 攻撃を回避するためのセキュリティ設定があります。認証されたユーザーのセッションは UI セッションになります。新しいタブまたはブラウザウィンドウを開いて REST エンドポイントに移動しようとすると、そのユーザーセッションに CSRF 検証が適用されます。新しいタブ/ウィンドウには有効な CSRF トークンがないため、最終結果は未認証 (HTTP 401) になります。Resolution1 つの解決策は、REST コールによってプロンプトが表示されたら、パスワードを再度入力することです。その後、REST リクエストはパスワードを要求しなくなります。 次の 3 つのワークアラウンドがあります。 glide.security.use_csrf_token を false に設定する (非推奨)REST コールを GlideAjax 呼び出しに変換する (詳細については、製品ドキュメントの「GlideAjax」を参照してください)REST コールのヘッダーに「'X-userToken':window.g_ck」を含める: >>>> --from community----------------------------------- >>>> https://community.servicenow.com/message/881147 >>>> you can get token from window object using window.g_ck and >>>> set the header like this 'X-userToken':window.g_ck in your http call. >>>> >>>> >>>> $scope.getAllActive = function(){ >>>> $http({ >>>> method: 'GET', >>>> url: $scope.url + "", >>>> headers: { >>>> 'X-UserToken' : window.g_ck >>>> } >>>> }). >>>> success( function(data, status) { >>>> $scope.numbers = data.result; >>>> }). >>>> error ( function(data, status) { >>>> $scope.numbers= [{"number": "Error fetching list"}]; >>>> }); >>>> }; >>>> 注意:開発チームでは、3 番目のワークアラウンドを採用し、「'X-userToken':window.g_ck」を REST コールのヘッダーに含めることを推奨します。Related LinksREST API セキュリティ