【ServiceNow】OAuthでServiceNowへ接続する方法

【ServiceNow】OAuthでServiceNowへ接続する方法

with コメントはまだありません
こんにちは、ServiceNow担当のわっくんです。

この記事では、ServiceNow上でOAuth接続を実現する方法を説明します。

OAuthとは

OAuthとは、複数のWebサービス(またはアプリケーション)を連携して動作させるための仕組みです。

Webサービスは、個別にIDとパスワードを入力して認証(ログイン)をする必要がありますが、OAuthの利用によりユーザはIDやパスワードを入力することなく、別アプリケーション間の操作ができます。

例えば、ServiceNowで外部公開しているテーブルAPIを、別のアプリから呼び出す場合を考えてみます。

OAuthを利用しない場合は、APIを実行(呼び出す)ためにはIDとパスワードを一緒に指定する必要があるため、ServiceNow管理者は連携先システムにIDとパスワードを公開する必要があります。

OAuthを利用していれば、認可されている間はIDとパスワードを入力することなくAPIが実行できます。

OAuthのメリットとデメリット

メリット

OAuthは事前にトークンを取得することが必要ですが、取得後は有効期間が切れるまで許可された操作が可能になります。

Webサービス間の接続にIDとパスワードを直接渡すのではなく、トークンを生成してそれを渡すことで、万が一トークンが盗まれても最小限の被害で済みます。

トークンに有効期限を設けたり、権限を制限することで、セキュリティの高いシングルサインオンを実現できます。

 

デメリット

トークンが漏洩した場合、悪用される可能性があります。

初回のトークン取得時や、期限切れのトークンを更新する場合に、ServiceNow のIDとパスワードが必要になります。完全にIDとパスワードを秘匿したい場合は、トークン取得時の認証操作をServiceNowの管理者側で代理操作する等の運用が必要になります。

 
ServiceNowは、Webアクセス専用のユーザIDの作成、アクセスポリシーの設定やACLの設定を最小限にすることで、被害を最小化することが可能です。OAuthと合わせて利用するとよりセキュアなシステムになります。

OAuthの使い方

最初にトークンを取得する必要があります。
トークンの取得時にIDとパスワードによる認証が必要ですが、一度トークンを取得した後は、トークンを使用してServiceNowにアスセスすることができます。

システム管理者が事前にServiceNowからトークンを取得しておき、任意のWebサービスからトークンを使ってアクセスできるようにしておくことで、利用者はそのWebサービスにログインするだけで、ServiceNowへの個別ログインは不要になります。

 

ここからは、OAuthでServiceNowに接続する例を紹介します。

次章から下記の観点に分けて説明します。
  • ServiceNowでのOAuth接続の設定方法
  • 外部アプリからServiceNowへOAuthで接続する方法
 
OAuthの仕組みではアクセストークンとリフレッシュトークンの2種類のトークンが存在しますが、特に指定しない限りこの記事ではアクセストークンを指します。
本記事で紹介する方法は、2023年11月現在(Utahバージョン)の情報に基づきます。
将来のバージョンアップにより内容が変更されることがあります。

ServiceNowでのOAuth接続の設定方法

今回は、外部クライアントアプリケーションが ServiceNowインスタンスにアクセスするためのOAuth設定を作成します。

<手順>
1. まずServiceNow側で、OAuthの設定を登録します。
[すべて] > [システム OAuth] > [アプリケーションレジストリー]に移動し、[新規] をクリックします。


2. インターセプターページで、[外部クライアント用の OAuth API エンドポイントを作成] を選択します。

3.アプリケーションレジストリのフォームに下記の値を設定します。

<設定内容>
名前:
OAuthアクセスが必要なアプリケーションを識別する一意の名前。

クライアントID:
自動生成された一意のアプリケーションIDです。
インスタンスは、アクセストークンを要求するときにクライアントIDを使用します。(読み取り専用)

クライアントシークレット:
インスタンスとクライアントアプリケーションまたはWebサイトの両方が、相互通信を許可するために使用する共有シークレット文字列です。自動生成されるので、空白のままで大丈夫です。
登録後にロックアイコンをクリックするとクライアントシークレットが表示されます。

リダイレクト URL:
認証サーバーがリダイレクトするコールバックURLです。
設定値はクライアントシステム側に確認して設定します。

リフレッシュトークンの有効期間:
リフレッシュトークンが有効な期間です。(単位:秒数)
デフォルトでは、100日(8640000秒)で期限切れになります。



3.ServiceNow内に、OAuth接続で利用するユーザを作成します。

 

外部からServiceNowへOAuthで接続する方法

ここでは、外部のアプリからServiceNowにOAuth接続を行い、インシデントテーブルのデモデータを取得してみます。

今回は一般的なAPIテストツールであるPostmanから、ServiceNowにOAuthで接続してみます。
下記の手順でOAuthの認証情報を設定すると、ServiceNowのAPIが実行できます。

<手順>
1.Postman上で、[Authorization]タブを登録します。
Type:「OAuth 2.0」を選択します。
Add authorization data to:デフォルトのままで大丈夫です。

2.Configure New Tokenの各項目に下記の値を設定する。



3.アクセストークンを取得します。
([Get New Access Token]ボタンを押下します。)
アクセストークンの取得に成功すると、下記のPOPUP画面が表示されます。


4.取得したトークン情報を確認する画面が表示されます。
同じ設定で複数回トークンを取得する場合は、識別のために[Token Name]を変更しておくと便利です。
(下記画像の例では、末尾にトークンの取得日付を追加しています。)
この画面で [Use Token]ボタンを押下すると、取得したトークンを利用することができます。



 

5.トークン取得後にTable APIのリクエストを送信すると、下記のように結果が取得できます。
(OAuth接続でインシデントのデータが取得できたことになります)

まとめ

今回はServiceNow側で、他のクライアントアプリケーションからOAuth接続するための設定方法をご紹介しました。

既にサードパーティプロバイダーのOAuthが導入されている場合は、それを利用して、ServiceNowインスタンスに接続することも可能です。業務要件に応じて、最適な方を選択できます。

ServiceNowの高度な実装には、弊社のServiceNow導入サービスをよろしくお願いいたします。

ServiceNowについて更に詳しく知りたい方は、
ServiceNowに熟知したSTSメンバーがよりよいシステム構築をご提案しますので、ぜひご相談ください。

本記事はいかがでしたか?

Follow わっくん:

株式会社システムサポート デジタルイノベーション事業部 ServiceNow担当のわっくんです。 様々コンテンツを配信していきます。