OAuth 認証コード権限許可フロー

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • 認証コード権限許可フローでは、リソースを信頼する OAuth サーバーで直接認証することで、ユーザーはリソースへのアクセスを許可されます。これは、ユーザー名/パスワード認証情報を使用した認証とは対照的です。

    この OAuth 認証コードフローの実装により、REST を介してリソースにアクセスできるようになります。認証コードフレームワークは、ユーザーにユーザー名/パスワードの入力を要求するのではなく、ユーザーが設定した承認済み URL を介してアクセストークンを取得します。ユーザー名/パスワードは、リソースへのアクセスを要求しているクライアントに公開されることはありません。

    認証サーバーとしての ServiceNow インスタンス

    OAuth サーバーは通常、サードパーティの認証サーバーです。認証コードフローのトークンを発行する認証サーバーとして ServiceNow インスタンスを指定することもできます。

    制限付きリソースを所有するユーザーは、アクセスを許可する必要があります。またユーザーは、発行されたアクセストークンをいつでも取り消してアクセスを終了できます。

    認証コード権限許可フロープロセス

    認証コード権限許可フロープロセスは、次の 3 段階のステップで構成されています。

    ステップ 1 では、クライアントアプリケーションまたは Web サイトが、ユーザーエージェントを介してインスタンスへの GET 要求の形式で REST API 呼び出しを開始します。通常、REST 呼び出しは、エンドユーザーがクライアントアプリケーションまたは Web サイトのボタンまたはリンクをクリックしてアクセストークンを要求すると開始されます。クライアントアプリケーションでは、エンドユーザーは認証 URL、トークン URL、クライアント ID、およびクライアントシークレットも指定する必要があります。これらのアイテムの説明については、「サードパーティ OAuth プロバイダーの使用」に記載されているフィールドの説明を参照してください。クライアントが権限許可タイプを要求した場合、エンドユーザーは認証コードを選択する必要があります。

    クライアントアプリケーションからインスタンスへの GET 要求の例:
    https://myinstance.service-now.com/oauth_auth.do?response_type=code&redirect_uri={the_redirect_url}&client_id={the_client_identifier}
    注:
    response_type は、標準の OAuth コード権限許可フローを使用するための code である必要があります。
    エンドユーザーは、インスタンスの制限付きリソースへのアクセスを手動で許可する必要があります。ServiceNow 実装では、エンドユーザーはインスタンスにログインする必要があります。インスタンスは、[許可] および [拒否] ボタンがある UI ページでエンドユーザーにプロンプトを表示します。

    クライアントアプリケーションが実際にトークンフォームを要求しているアイテムは、作成した OAuth プロバイダーアプリケーションレジストリレコードで、認証エンドポイントとも呼ばれます (「サードパーティ OAuth プロバイダーの使用」を参照してください)。認証コードが認証エンドポイントからクライアントに送信されます。この場合、クライアントには直接移動せず、認証エンドポイントフォームで指定するリダイレクト URL に移動します。この URL はコールバック URL とも呼ばれます。この URL は、クライアントアプリケーションまたは Web サイトから取得できます。

    認証コードを提供する、インスタンスからクライアントアプリケーションへの応答の例:
    https/http://{callbackURL}?code={the actual auth code}

    クライアントアプリケーションは認証コードを取得したので、クライアントはそのコードを使用してアクセストークンを要求します。認証コードは、ユーザーがステップ 1 で同意したことを証明します。

    クライアントアプリケーションから ServiceNow インスタンスへの POST 要求の例 (認証コードを提供し、アクセストークンを要求):
    https://myinstance.service-now.com/oauth_token.do?grant_type=authorization_code&code={the auth code}&redirect_uri={the_same_redirect_url}&client_id={the_same_client_identifier}&client_secret={client_secret_value}

    インスタンスのエンドポイントは、アクセストークンとリフレッシュトークンを返します。リフレッシュトークンを使用して、追加のアクセストークンを要求できます。

    インスタンスでは、トークンの取り消しなどのトークンの管理を実行できます。「OAuth トークンの管理」を参照してください。

    クライアントアプリケーションは、アクセストークンを使用して REST API を認証します。クライアントアプリケーションを認証した後、REST API は要求されたデータを JSON ペイロードで返します。

    インシデント [incident] テーブルのデータの JSON ペイロードの GET 要求の例:
    https://myinstance.service-now.com/api/now/table/incident?access_token={the_token}
    注:
    システムは、暗黙的な権限許可コードフローとも呼ばれる OAuth 暗黙的な権限許可もサポートしています。

    統合サポート

    認証コードフローは、インスタンスについて次の統合をサポートしています。
    • マルチ SSO
    • SAML 2.0 Update 1
    • マルチファクター認証

    モバイルインターフェイスもサポートされています。