hide's memo
9 4月, 2023

OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得

[English]

OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得のシーケンスを、Salesforceとservicenowで確認する。

(1)以下のシーケンスで、認可コードを取得する。(クリックで拡大)

 

(2)上記(1)で取得した認可コードを使って、以下のシーケンスでリフレッシュトークンを取得する。(クリックで拡大)

■その他関連リンク

Servicenowでリフレッシュトークンを取得する

Salesforceでリフレッシュトークを取得する

 

9 4月, 2023

Servicenowでリフレッシュトークンを取得する

[English]

OAuth2.0 Authorization code flow を使って リフレッシュトークンを取得する方法。

 

(1)servicenow 上でエンドポイントを作成
(1.1)自分の servicenow にログイン
(1.2)System OAuth -> Application Registory
(1.3)Newボタンを押す
(1.4)”Create an OAuth API endopint for external clients” を選択
(1.5)以下の例のように指定してエンドポイントを作成

(2)Get Access code
(2.1)ブラウザを起動
(2.2)以下のURLにアクセスする。

https://${YOUR_INSTANCE}.service-now.com/oauth_auth.do?response_type=code&redirect_uri=https%3A%2F%2Flocalhost%2Ftest&client_id=${YOUR_CLIENT_ID}&grant_type=authorization_code&state=123

* redirect_url ... https://localhost/test (上記(1.5)で指定したリダイレクトURL)
* state ... 123(適当な文字列)

 

(2.3)以下のようなログインページが表示されるのでログインする(すでにservicenowにログインしている場合は表示されない)


(2.4)”Allow”ボタンを押す。


(2.5)localhostへのリダイレクトは失敗するが、アドレスバーから認可コードを取得できる。


(2.6)認可コードをメモする。

(3)アクセストークンとリフレッシュトークンを取得する。
(3.1)以下のようなシェルを用意する。

#!/bin/sh

MY_INSTANCE="**** YOUR INSTANCE ****"
CLIENT_ID="**** YOUR CLIENT ID ****"
CLIENT_SECRET="**** YOUR CLIENT SECRET ****"
REDIRECT_URI="https%3A%2F%2Flocalhost%2Ftest" # (上記(1.5)で指定したリダイレクトURL)
STATE="123" # 上記(2.2)で指定した文字列
CODE=$1

RESULT=`curl -X POST https://${MY_INSTANCE}.service-now.com/oauth_token.do -d "grant_type=authorization_code" -d "code=${CODE}" -d "redirect_uri=${REDIRECT_URI}" -d "client_id=${CLIENT_ID}"\
-d "client_secret=${CLIENT_SECRET}" -d "state=${STATE}"`

echo $RESULT

 

(3.2)上記シェルを、引数に (2.6)でメモした認可コードを指定して実行する。
(3.3)以下のようなjsonを取得できる。その中にリフレッシュトークンが含まれる。

{“access_token”:”***********”,“refresh_token”:”*******”,”scope”:”useraccount”,”token_type”:”Bearer”,”expires_in”:1799}

■リフレッシュトークンを使ってservicenow のREST-APIにアクセスする

以下のリンクを参照。

ServiceNowのデータをcurlで取得