ServiceNow での OAuth トークンの管理Descriptionこの記事では、ServiceNow に保存されている OAuth トークンを管理する方法に関する追加情報を提供します。 Instructionsインスタンスによって発行され、サードパーティの OAuth プロバイダーから受信した oAuth トークンは、oauth_credential テーブルに格納されます。 トークンの管理: トークンは「oauth_credential」テーブルに格納されています。トークンは、[System oAuth] -> [Manage Tokens]で見つけることができます。 このテーブルにある重要なカラム: トークン(Token) :ServiceNowインスタンスによって発行されたトークンの値。 タイプ(Type):トークンが「アクセストークン」または「リフレッシュトークン」かどうかを決定します。 有効期限(Expires):アクセストークンまたはリフレッシュトークンの有効期限が切れる日時。 トークンの受信(Token Received):サードパーティの OAuth プロバイダーによって発行されたトークンの値。この値は暗号化形式です。 トークンの有効期限と有効性: アクセストークン :デフォルトでは、インスタンスが OAuth プロバイダーであるシナリオでは、インスタンスは 30 分の有効期間のアクセストークンを発行します。サードパーティのトークンの場合は 30 日間です。 リフレッシュトークン: デフォルトでは、インスタンスが OAuth プロバイダーであるシナリオでは、インスタンスは 100 日の有効期間でリフレッシュトークンを発行します。サードパーティのトークンの場合は 365 日間です。 ServiceNow によって発行されたトークンの場合、アプリケーションレジストリ (oauth_entity) エントリで [アクセストークンの有効期間(Access Token Lifespan)] と [トークンの有効期間を更新(Refresh Token Lifespan)] の値を変更することで有効期間を変更できます。値は秒単位です。 サードパーティトークンの場合は、トークンの受信後に [トークンの管理 (oauth_credential)] セクションの [有効期限(Expires)] 列の値を変更することで、有効期限を変更できます。 新しいアクセストークンを取得するために新しい呼び出しが行われるたびに (grant_type=refresh_token を使用せずに)、現在のリフレッシュトークンの有効期限も新しい時間に更新されます。 この呼び出し中に有効なアクセストークンが既に存在する場合、同じトークンが返され、現在のアクセストークンの有効期限が新しい時間 (トークンの有効期間) に更新されます。 ServiceNow リフレッシュトークンには有効期限がありますが、非常に大きな数(数千年)に設定することができます。 このリフレッシュトークンを使用すると、grant_type=refresh_token を使用して新しいアクセストークンを取得できます (ユーザー名/パスワードを送信する必要はありません)。 既存の有効なトークンへのアクセスは、以下の手順を使用して取り消すこともできます。[名前] をクリックしして、トークンを開きます。[アクセスを取り消す] をクリックして、制限付きリソースへのアクセスを防止します。 OAuthUtil スクリプト:このスクリプトインクルードは、実行時に要求パラメーターを変更し、トークン応答を解析します。 外部 OAuth プロバイダーがアプリケーション/JSON タイプの応答以外の応答を返す場合は、このスクリプトインクルードの独自のバージョンをカスタマイズして、異なる形式の応答を解析できます。このスクリプトインクルードを拡張またはコピーし、サードパーティの OAuth プロバイダーを対象とする [アプリケーションレジストリー] フォームの [OAuth API スクリプト] フィールドから、お使いのバージョンを参照します。カスタムのスクリプトインクルード名は OAuthで始まる必要があります。 OOTB OAuth スクリプトの例は、Google Drive Spoke に含まれています:https://<instance_name>.service-now.com/nav_to.do?uri=sys_script_include.do?sys_id=a5aba64fdb9ef7003e146583ca96198c 次の追加ロジックにより、リフレッシュトークンの使用が許可されます。preprocessAuthCode: function(requestParamMap) {requestParamMap.put('access_type', 'offline');requestParamMap.put('response_type','code');requestParamMap.put('prompt','consent');}, 参照: How to automate OAuth Access Token generation via script?