SOAP Web サービス

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:14分
  • Simple Object Access Protocol (SOAP) は、HTTP 経由で Web サービスにアクセスするための XML ベースのプロトコルです。

    SOAP を使用してインスタンスのデータにアクセスできます。利用可能な SOAP Web サービスは、WS-I Basic Profile 1.0 で概説されているように、WS-I に準拠しています。

    Web サービスプロバイダー

    ServiceNow は、次の Web サービスメソッドを使用して、基礎となるテーブル構造と関連データを公開します。
    注:
    SOAP メッセージは、受信者が XML に準拠していることを前提として送信されます。SOAP メッセージにエンコードは適用されません。SOAP は応答を常に UTF-8 としてデコードし、XML エンコーディングヘッダーは使用されません。

    WSDL

    すべてのテーブルとインポート セットは、そのテーブルスキーマと利用可能な操作を記述する Web サービス定義言語 (WSDL) XML ドキュメントを動的に生成します。

    テーブルの WSDL を取得するには、テーブルの名前と WSDL パラメーターを含むインスタンスへの URL 呼び出しを発行します。例:
    https://myinstance.service-now.com/incident.do?WSDL
    

    動的に生成され、HTTP を介してアクセス可能なすべての ServiceNow WSDL は、Open Source Initiative OSI - Apache ライセンス、バージョン 2.0 のライセンス契約で定義された条件に基づいて使用できます。

    長時間実行される SOAP 要求のサポート

    Now Platform は、要求の処理中にネットワーク接続の滞留アクティビティによるソケットタイムアウトを防ぐことで、実行時間の長い SOAP 要求をサポートします。

    この機能により、多数のレコードを要求するとき、集計クエリを実行するとき、またはソートが必要な order by 式を使用するときに、ODBC Driver の効率が向上します。

    デフォルトでは、ServiceNow によって提供される ODBC Driver や MID Server などの Web サービスクライアントに対してタイムアウト保護が提供されます。システムプロパティを使用して、カスタム Web サービスにタイムアウト保護を追加できます。

    タイムアウト保護

    Web サービスクライアントは、307-Temporary Redirect を受信して長時間セッションを維持し、ソケットの滞留によるタイムアウトを防止します。ステータスコードをサポートする Web サービスクライアントは、307-Temporary Redirect により、HTTP 場所ヘッダーで指定された場所に最後の要求を繰り返します。場所ヘッダーの値は、Web サービスクライアントが最初に指定した URL と同じです。307-Temporary Redirect の使用は WS-I に準拠しています。

    glide.soap.request_processing_timeout で指定されたタイムアウト制限を超えた Web サービス要求は、次の条件が「すべて」満たされた場合にのみ 307-Temporary Redirect を受信できます。
    • glide.soapprocessor.allow_long_running_threads の値が true です。
    • 要求に redirectSupported=true URL パラメーターが含まれています。
    • 要求がセッション認識型です (HTTP cookie をサポートしています)。
    • リダイレクトの数が glide.soap.max_redirects で設定された値を超えていません。
    これらの条件のいずれかが満たされない場合、Web サービスクライアントは 408 要求タイムアウトエラーを受け取ります。
    注:
    アプリケーションで 408 要求タイムアウトではなくソケットタイムアウトが発生するようにするには、アプリケーションとインスタンス間の接続で有効な最短ソケットタイムアウト設定 (ホストされているインスタンスの場合は 300 秒) よりも大きい値に glide.soap.request_processing_timeout プロパティを設定します。

    SOAP Web サービスのセキュリティ

    インスタンスは、HTTP プロトコルを介した基本のチャレンジ/レスポンス認証と Contextual Security を使用したシステムレベルのアクセス制御リスト (ACL) との組み合わせを使用して、Web サービスセキュリティを強制します。管理者は、Web サービスユーザーに SOAP ロールの 1 つを付与することで、ユーザーがアクセスできるシステムリソースを制御できます。

    SOAP ロール

    SOAP Web サービスを使用するには、実行する操作に適したロールが必要です。また、ターゲットテーブルにアクセスするために必要な他のロールも必要です。

    表 : 1. SOAP ロール
    ロール 説明
    soap すべての SOAP 操作を実行できます。
    soap_create 新規レコードを挿入できます。
    soap_delete 既存のレコードを削除できます。
    soap_ecc キュー [ecc_queue] テーブルのレコードをクエリ、挿入、削除できます。
    soap_query レコード情報のクエリを実行できます。
    soap_query_update 拡張クエリパラメーター
    soap_script .do エンドポイントを指定するスクリプトを実行できます。このロールは、スクリプト化された Web サービスを実行するために必要です。
    soap_update レコードを更新できます。
    import_admin インポートセットとインポートのあらゆる側面を管理できます。インポートセット行 [sys_import_set_row] テーブルへのアクセスに必要です。
    import_transformer インポートセットの変換マップを管理し、変換を実行できます。インポートセット行 [sys_import_set_row] テーブルへのアクセスに必要です。

    デフォルトの Web サービスロールの要件

    デフォルトでは、プロセッサーの一連の ACL ルールでは、WSDL、XSD、および XML スキーマ要求を行うために soap_query ロールが必要です。

    これらのロール要件を変更する場合は、ACL ルールを無効にすることができます。

    図 : 1. Web サービスプロセッサーの ACL

    基本認証

    WSDL または SOAP メッセージ要求ごとにインスタンスに関連付けられたユーザーに対して基本認証を強制するために、管理者はプロパティ glide.basicauth.requiredtrue に設定できます。

    有効にすると、WSDL および SOAP の各要求には、基本認証プロトコルで指定されているように「認証」ヘッダーを含める必要があります。

    Web サービス要求は非インタラクティブであるため、要求の実行中は常に認証ヘッダーが必要になります。

    注:
    設定されている場合、基本認証はローカル資格情報または LDAP 認証を参照します。

    (必要かどうかに関わらず) すべての要求で基本認証資格情報を提供すると、基本認証資格情報で提供されたユーザーを Web サービスの呼び出しに関連付けることができるというメリットがあります。たとえば、インシデントレコードの作成時、ジャーナルフィールドには、デフォルトのゲストユーザーではなく、基本認証ヘッダーに含まれるユーザー ID のリストが表示されます。

    SOAP セキュリティポリシー

    Enhanced Web Service Provider - Common プラグインは、SOAP セキュリティポリシーモジュールをシステム Web サービス アプリケーションに追加します。このモジュールを使用すると、管理者は次のセキュリティポリシーを設定できます。
    • 外部 Web サービスの使用時に SOAP 要求の署名を有効または無効にします。
    • WS-Security を介して通信するときに SOAP 要求が満たす必要がある認証要件を指定します。

    SOAP アクセスポリシーの詳細については、「 SOAP API アクセスポリシー」を参照してください。

    図 : 2. SOAP セキュリティポリシー

    署名済み SOAP 要求に必要な証明書

    WS-Security 通信の SOAP 要求に署名するには、次の証明書が必要です。

    • 要求者からの X.509 証明書
    • 要求者の証明書に署名した認証局の X.509 CA 証明書

    SOAP デフォルトセキュリティポリシー

    管理者は、インスタンスが使用する SOAP セキュリティポリシーをシステムプロパティ glide.soap.default_security_policyで指定できます。glide.soap.default_security_policy システムプロパティは、Web Services-Security (WSS) を受信要求に強制するときにインスタンスが使用する SOAP セキュリティポリシーの名前を指定します。

    表 : 2. SOAP デフォルトセキュリティポリシー設定
    フィールド 説明
    タイプ 文字列
    デフォルト値 デフォルトセキュリティポリシー
    場所 システムプロパティをシステムプロパティ [sys_properties] テーブルに追加する

    WS セキュリティを使用

    WS-Security を使用して、署名済み Web サービス要求を検証できます。WS-Security を有効にして、次のことを行います。
    • 既知の送信者からの SOAP メッセージの確認
    • 送信中に SOAP メッセージが変更されていないことの確認
    ServiceNow では WS-Security 1.1 をサポートして、署名済み Web サービス要求を検証します。
    注:
    WS-Security は暗号化メカニズムとして使用されません。HTTPS プロトコルを使用してすべての通信が暗号化されます。

    WS-Security は基本認証で動作するように意図されています。インスタンスが SOAP メッセージを受信すると、基本認証ヘッダーを確認して、SOAP ユーザーがインスタンスに対する権限を持っているかどうかを判断します。WS-Security ヘッダーを確認して、受信メッセージの有効性を判断します。中間者攻撃などの攻撃の影響を受ける要求は、無効な WS-Security ヘッダーを持っており、ブロックされます。

    WS-Security プロファイル

    WS-Security プロファイルは、WS-Security が有効になっている場合の Web サービスメッセージの認証方法を決定します。次のメカニズムを使用して、Web サービス要求を認証できます。

    表 : 3. Web サービスの認証メカニズム
    認証メカニズム 説明
    証明書の検証 要求に関連付けられた証明書を検証します。要求の証明書を検証するには、要求者の証明書と認証局をアップロードする必要があります。
    ユーザー資格情報 要求に関連付けられたユーザー資格情報を確認して、Web サービス要求を認証します。このタイプの認証では、要求の資格情報が既存のユーザーの資格情報と一致すること、または要求の資格情報がプロファイルレコードで指定されたユーザー名とパスワードと一致することを確認できます。
    新しい WS-Security プロファイルを作成するときに使用する認証メカニズムを指定します。

    WS-Security プロファイルモジュールには、現在有効な WS-Security プロファイルがリストされます。

    図 : 3. WS-Security プロファイルモジュール

    WS-Security エラーログ記録

    glide.processor.debug.SOAPProcessor システムプロパティを使用すると、WS-Security に関するエラーメッセージをトランザクションログに表示できます。

    システムプロパティ glide.processor.debug.SOAPProcessor は、証明書やキーストアのチェックなどの SOAP 処理のデバッグメッセージを有効 (true) または無効 (false) にします。

    表 : 4. glide.processor.debug.SOAPProcessor フィールド
    フィールド 説明
    タイプ True | False
    デフォルト値 false
    場所 システムプロパティをシステムプロパティ [sys_properties] テーブルに追加する

    WSS X.509 トークンプロファイル

    WSS X.509 セキュリティプロファイルには、X.509 フレームワークを使用します。X.509 証明書は、着信 SOAP メッセージの署名に使用される公開鍵を検証するために使用されます。公開鍵と、少なくとも以下を含む一連の属性の間のバインディングを指定します。
    • サブジェクト名
    • 発行者名
    • シリアル番号
    • 有効間隔

    Web Services Security: SOAP Message Security specification (Web サービスセキュリティ:SOAP メッセージセキュリティ仕様) で定義されている通りに X.509 認証フレームワークを使用します。

    証明書をアップロードして、[X509 証明書] フィールドで参照します。バインドされたセッションの場合は、WS-Security 認証が成功したときになりすますユーザーを選択します。

    図 : 4. WSS X.509 セキュリティプロファイル

    WSS ユーザー名トークンプロファイル

    X.509 トークンプロファイルを指定するときに、SOAP 要求のユーザー名トークンも指定できます。

    ユーザー名トークンは、「ユーザー名」で要求者を識別する手段として使用され、オプションでパスワード、共有シークレット、またはパスワードと同等のものを使用して、その ID を証明します。

    ユーザー名トークンを認証する方法は 2 種類あります。

    1. 既存のユーザー資格情報を使用して認証する方法。
      図 : 5. 既存のユーザー資格情報を使用した認証

      受信 SOAP 要求のユーザー名を使用して、指定された [ユーザー] フィールドで UserName 値に一致するユーザーを検索します。受信ユーザー名トークンのパスワード値を使用して、要求が認証されます。[セッションのバインド] オプションを選択すると、認証に成功したユーザーがセッションに使用されます。

    2. 指定されたユーザー資格情報を使用して認証する方法。
      図 : 6. 指定されたユーザー資格情報を使用した認証

      ユーザーテーブル内のユーザーに関連しないログイン資格情報を使用して認証します。[セッションのバインド] オプションが選択されている場合、[ユーザーとして実行] フィールドで指定されているユーザーがセッションに使用されます。

    注:
    ユーザー名トークンプロファイルは、X.509 トークンプロファイルから独立して使用することはできません。

    Web サービスの厳格なセキュリティ

    デフォルトでは、Web サービスの基本認証では、ユーザーが SOAP 接続を使用してインスタンスにアクセスする権限があるかどうかのみが判断されます。許可されると、すべてのユーザーが Web サービスとして公開されたテーブルにアクセスできるようになります。

    システムプロパティ [着信 SOAP 要求に厳格なセキュリティを強制します ] は、この動作を変更し、ユーザーが Web サービスからインスタンスリソースにアクセスするには コンテキスト依存セキュリティマネージャー の要件を満たす必要があります。

    このプロパティを有効にすると、適切な SOAP ロールを持ち、テーブルと操作の ACL 条件を満たすユーザーのみが、SOAP 接続からその操作を実行できます。

    Web サービスの相互認証

    相互認証は、送信 Web サービスでサポートされています。

    SOAP セッションの管理とレポート

    SOAP セッションは、Web サービスクライアントアプリケーション、ServiceNow MID Server、ServiceNow ODBC Driver などの外部 SOAP クライアントによりインスタンスで確立された Glide セッションです。SOAP セッションは、次の場所にあるユーザーセッションのリストに含まれています。 ユーザー管理 > ログインユーザー.?SOAP URL は SOAP セッションを識別します。

    SOAP セッションプロパティ

    SOAP セッションの維持方法を制御するプロパティがあります。

    表 : 5. SOAP セッションプロパティ
    プロパティ 説明
    glide.soap.invalidate_session_timeout アクティブなセッションを開いたままにする期間 (秒)。この期間に達すると、インスタンスはセッションを非アクティブ化し、システムリソースを再利用します。タイムアウト期間に達した後にクライアントが別の要求を送信すると、インスタンスは新しいセッションを確立します。

    このプロパティは、5 〜 1200 秒 (20 分) の値を受け入れます。

    • タイプ:整数
    • デフォルト値:60
    • 場所:システムのプロパティ [sys_properties] テーブルに追加
    注:
    SOAP Web サービスの処理に影響するプロパティの詳細については、「インスタンスセキュリティ強化設定」の以下のトピックを参照してください。
    • アクセス制御 アクセス制御 (インスタンスセキュリティ強化)
    • 基本認証:SOAP 要求