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で取得

13 2月, 2022

ServiceNowのデータをcurlで取得

[English]

ServiceNowのIncidentを curlで取得するサンプル

1. userid, passwordを使うパターン

#!/bin/sh

MY_INSTANCE="**** your instance ****"
CLIENT_ID="**** your instance ****"
CLIENT_SECRET="**** your instance ****"
USER="** your userid **"
PASSWD="*** your password ***" # !!warning. you might need to escape it.

#----------------------------------------------
# Get Access token from Id,Passwd
#----------------------------------------------
RESULT=`curl -X POST https://$MY_INSTANCE.service-now.com/oauth_token.do -H "Content-type: application/x-www-form-urlencoded" -d "grant_type=password" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "username=$USER" -d "password=$PASSWD"`

ACCESS=`echo $RESULT | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}'| sed -s 's/\"//g'`


#----------------------------------------------
#Get Incident with using Access token
#----------------------------------------------
curl -s "https://$MY_INSTANCE.service-now.com/api/now/table/incident?sysparam_query=&sysparam_view=&sysparam_fields=sys_id%2Cshort_description" -H "Authorization: Bearer $ACCESS" -H "Content-Type: application/json"

 

 

2. refresh token を使うパターン

#!/bin/sh

MY_INSTANCE="**** your instance ****"
CLIENT_ID="**** your instance ****"
CLIENT_SECRET="***** your instance ****"
REFRESH_TOKEN="****your refresh token ****"

#----------------------------------------------
# Get Access token from Refresh token.
#----------------------------------------------
RESULT=`curl -X POST https://$MY_INSTANCE.service-now.com/oauth_token.do -d "grant_type=refresh_token" -d "scope=useraccount" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "refresh_token=$REFRESH_TOKEN"`
ACCESS=`echo $RESULT | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}'| sed -s 's/\"//g'`

#----------------------------------------------
#Get Incident with using Access token.
#----------------------------------------------
curl -s "https://$MY_INSTANCE.service-now.com/api/now/table/incident?sysparam_query=&sysparam_view=&sysparam_fields=sys_id%2Cshort_description" -H "Authorization: Bearer $ACCESS" -H "Content-Type: application/json"

3. リフレッシュトークンを取得する方法

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

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