# OAuth 2.0トークン

Workato の API プラットフォームユーザーは、自身の認証を OAuth 2.0 (クライアント資格情報付与) 仕様に基づいて行うことができます。静的なトークンの代わりに、クライアントは OAuth 2.0フローによって取得したアクセストークンを使って API リクエストを実行します。ユーザーは、まず Workato のトークン要求エンドポイントからアクセストークンを取得します。その後は、そのアクセストークンを使用して Workato API エンドポイントに対する API 呼び出しを実行できます。

# OAuth 2.0の設定方法

手順 説明
1. アクセスプロファイルを作成します。認証方法として OAuth 2.0 を選択します。
アクセスプロファイル - OAuth 2.0による認証方法アクセスプロファイル - OAuth 2.0による認証方法
2. アクセスプロファイルの資格情報 ( [Client ID][Client secret] ) をコピーします。
アクセスプロファイル - OAuth 2.0の資格情報アクセスプロファイル - OAuth 2.0の資格情報

# アクセストークンの要求

パラメータ 説明
grant_type 必須。トークン要求の認証メカニズムです。client_credentials とする必要があります。
client_id 必須。アクセスプロファイルから取得されたクライアント ID です。
client_secret 必須。アクセスプロファイルから取得されたクライアントシークレットです。

Workato のトークン要求エンドポイントに POST リクエストを送信します。トークン要求には、クライアントの資格情報と grant_type パラメータを含める必要があります。RFC (opens new window) では、クライアントの資格情報はエンコードし、Basic Auth ヘッダーとして送信することが推奨されています。その際、ユーザー名には client_id、パスワードには client_secret を使用します。下の例を参照してください。

POST /oauth2/token HTTP/1.1
Host: apim.workato.com
Authorization: Basic ${Base64(<CLIENT_ID>:<CLIENT_SECRET>)}
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

# サポートされているその他の形式

これに合致する形式は、一部の HTTP クライアントではサポートされていません。そこで、Workato では代わりになる以下のような形式にも対応しています。

Content-Type の一貫性

Content-Type ヘッダーは必須であり、ペイロードの形式に一致している必要があります。そうでない場合、リクエストは拒否されます。

# JSON 形式

POST /oauth2/token HTTP/1.1
Host: apim.workato.com
Content-Type: application/json

{
  "grant_type": "client_credentials",
  "client_id": "<CLIENT_ID>",
  "client_secret": "<CLIENT_SECRET>"
}

# URL エンコードされた本文

POST /oauth2/token HTTP/1.1
Host: apim.workato.com
Content-Type: application/x-www-form-urlencoded

client_secret=<CLIENT_SECRET>&client_id=<CLIENT_ID>&grant_type=client_credentials

# 複合データ型

POST /oauth2/token HTTP/1.1
Host: apim.workato.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="grant_type"

client_credentials
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="client_id"

<CLIENT_ID>
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="client_secret"

<CLIENT_SECRET>
----WebKitFormBoundary7MA4YWxkTrZu0gW

Postman (opens new window) のようなツールを使用してアクセストークンを生成することも可能です。

Postman によるアクセストークンの要求 Postman によるアクセストークンの生成

# トークン要求エンドポイント

Workato の各データセンターに対応するトークン要求エンドポイントは以下の通りです。

米国 (US)
https://apim.workato.com/oauth2/token
欧州連合 (EU)
https://apim.eu.workato.com/oauth2/token
日本 (JP)
https://apim.jp.workato.com/oauth2/token
シンガポール (SG)
https://apim.sg.workato.com/oauth2/token

API プラットフォームの所有者がカスタムドメインを有効にしている場合、トークン要求エンドポイントはカスタムドメインの後に続けて指定します。たとえば、カスタムドメインが api.boltcompany.com なら、トークン要求エンドポイントは https://api.boltcompany.com/oauth2/token になります。

# OAuth 2.0アクセストークンの取得

アクセストークン要求が正常に送信されると、Workato の認証サーバーは次のプロパティを含む JSON オブジェクトを返信します。

{
    "access_token": "eyJhbGciOiJIUzI1NiIsImtpZCI6ImFlZTM5NGExZTZiOGZmY2VhZGZhZmRhZDk4ZTJjZTdhNDE0YmU3NWU2ODcyNmNkOTQ3YjBjMmU3OTI1MTUzNGQiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiJhZWUzOTRhMWU2YjhmZmNlYWRmYWZkYWQ5OGUyY2U3YTQxNGJlNzVlNjg3MjZjZDk0N2IwYzJlNzkyNTE1MzRkIiwiZXhwIjoxNjQ5MzAzMDM4LCJuYmYiOjE2NDkyOTk0MzgsImlhdCI6MTY0OTI5OTQzOH0.TJySFOomyLkvyQHbvQBtm6qGj0bLDqSuUBqbkTSbXm4",
    "token_type": "bearer",
    "expires_in": 3600
}

有効期限

アクセストークンには3,600秒という有効期限がありますこれを超えると有効期限切れとなり、以降は使用できなくなります。クライアントが API リクエストを引き続き実行するには、新しいアクセストークンを生成する必要があります。

/oauth2/token に対してリクエストがあるごとに、独自の有効期限を持つ新しいアクセストークンが生成されます。

# API リクエストで OAuth 2.0アクセストークンを使用する

OAuth 2.0アクセストークンを使用して、Workato API エンドポイントに対する API 呼び出しを実行してみましょう。

Bearer 認証スキームを使用して、認証ヘッダーから取得したアクセストークンを指定します。API リクエストの実行方法の詳細は、こちらをご覧ください。

curl -XGET 'https://apim.workato.com/prefix/collection/endpoint/call?email=john-doe%40acme.com'\
-H 'Authorization: Bearer <ACCESS_TOKEN>'

# クライアントの資格情報の更新

クライアントシークレットは更新できます。これは、セキュリティ体制を強化するために、定期的に実行することが推奨されます。当然のことながら、古いクライアントシークレットは更新の後、機能しなくなります。さらに、以前に生成されたアクセストークンもクライアントシークレットとともに失効します。


Last updated: 2024/7/10 18:18:20