ハウツーガイド - OAuth 2.0リソース所有者パスワード資格情報認証
OAuth 2.0リソース所有者パスワード資格情報フローは、従来、サーバー間の認証方法です。 これにより、Workatoサーバーとして認証し、ターゲットAPIサーバーと通信できるコネクターを構築できます。 このフローでは、ユーザーのユーザー名とパスワードをアクセストークン、および必要に応じてリフレッシュトークンと交換できます。
サンプルコネクター - Microsoft Entra ID
{
title: 'My Azure connector',
connection: {
fields: [
{
name: 'tenant_id',
optional: false,
}
{
name: 'client_id',
optional: false,
},
{
name: 'client_secret',
control_type: 'password',
optional: false,
},
{
name: 'username',
optional: false,
},
{
name: 'password',
control_type: 'password',
optional: false,
}
],
authorization: {
type: 'custom_auth', #Set to custom_auth
acquire: lambda do |connection|
token_url = "https://login.microsoftonline.com/#{connection['tenant_id']}/oauth2/v2.0/token"
response = post(token_url).
payload(client_id: "#{connection['client_id']}",
client_secret: "#{connection['client_secret']}",
username: "#{connection['username']}",
password: "#{connection['password']}",
grant_type: "password").
request_format_www_form_urlencoded
{
access_token: response["access_token"],
}
end,
refresh_on: 401,
apply: lambda do |connection|
headers("Authorization": "Bearer #{connection['access_token']}")
end
}
},
test: lambda do |connection|
get( #Some accessible endpoint )
end,
#More connector code here
}ステップ1 - コネクションフィールドの定義
このコンポーネントは、コネクションを確立しようとしているユーザーに表示するフィールドをWorkatoに指示します。 リソース所有者パスワード資格情報の場合、ユーザーがAzureで生成したClient IDとClient Secretが必要です。 また、コネクションを承認するために使用するユーザーアカウントのユーザー名とパスワードも指定する必要があります。
| 必要な情報 | 説明 |
|---|---|
| Client ID | これは、Workatoに関連付ける必要があるOAuthアプリの公開IDです。 これは、アプリケーションでWorkatoを検証済みアプリケーションとして登録することを意味する場合があります |
| クライアントシークレット | これは、APIがClient IDとともに検証する対応する秘密鍵です。 これは、アプリケーションでWorkatoを検証済みアプリケーションとして登録することを意味する場合があります。 client secretを他の人と共有しないでください |
| ユーザー名 | これは、クライアントの認証権限を付与するユーザーアカウントのユーザー名です。 |
| パスワード | これは、クライアントの認証権限を付与するユーザーアカウントのパスワードです。 |
これは、ハッシュの配列を受け入れるfieldsキーで実行されます。 この配列内の各ハッシュは、個別の入力フィールドに対応します。
fields: [
{
name: 'tenant_id',
optional: false,
}
{
name: 'client_id',
optional: false,
},
{
name: 'client_secret',
control_type: 'password',
optional: false,
},
{
name: 'username',
optional: false,
},
{
name: 'password',
control_type: 'password',
optional: false,
}
],
TIP
フィールドを定義するときは、少なくともnameキーを指定する必要があります。 optional、hint、control_typeなどの追加属性を使用すると、これらのフィールドの他の側面をカスタマイズできます。 Client Secretなどの機密情報には、control_typeとしてpasswordを使用してください。
Workatoでの入力フィールドの定義の詳細については、コネクションフィールドを参照してください。
ステップ2 - 認可タイプの定義
このコンポーネントは、このコネクションで使用する認証タイプをWorkatoに伝えます。 これは、authorizationオブジェクト内のtypeキーを通じて処理されます。 Client Credentials認証には、custom_authを使用する必要があります。
type: 'custom_auth'ステップ3 - アクセストークンの取得
acquireキーでは、コネクターのユーザーが指定したclient_id、client_secret、username、passwordをペイロードとして渡します。 リクエストのペイロードはrequest_format_www_form_urlencodedで送信する必要がある点に注意してください。 また、passwordを付与タイプとして識別し、これをPOSTリクエストのペイロードとして渡します。 このリクエストはその後、MicrosoftのトークンURLに送信されます。
acquire: lambda do |connection|
response = post("https://login.microsoftonline.com/#{connection['tenant_id']}/oauth2/v2.0/token"). # Token URL
payload(client_id: "#{connection['client_id']}",
client_secret: "#{connection['client_secret']}",
username: "#{connection['username']}",
password: "#{connection['password']}",
grant_type: "password").
request_format_www_form_urlencoded
{
access_token: response["access_token"],
}
end,リクエストを受信すると、APIはJSONレスポンスを返します。
{
"access_token": "my-authentication-token",
"token_type": "bearer",
"expires_in": "seconds-until-expiration",
"error": "optional-error-message"
}acquire lambda関数の想定される出力は、元のコネクションハッシュにマージされるハッシュです。 例:
# Original Connection hash
{
client_id: "abcd1234",
client_secret: "secretClientSecret"
}
# After acquire block is executed
{
client_id: "abcd1234",
client_secret: "secretClientSecret",
access_token: "my-authentication-token"
}ステップ4 - 後続のHTTPリクエストへのアクセストークンの適用
次に、Microsoftから取得したアクセストークンをどのように使用するかをWorkatoに伝える必要があります。 これはapplyキーで行い、現在connection引数に保存されているアクセストークンを参照できます。 applyブロックで導入した命令は、コネクションが確立された後にこのコネクターが送信するすべてのHTTPリクエストに適用されます。
apply: lambda do |connection|
headers("Authorization": "Bearer #{connection['access_token']}")
endこの例では、任意のリクエストのヘッダーに追加されるアクセストークン(connection['access_token'])を定義しています。 送信される各HTTPリクエストのヘッダーには、XXXがconnectionハッシュに保存されたアクセストークンであるAuthorization: Bearer XXXが含まれます。
ステップ5 - APIのbase URIの設定
このコンポーネントは、APIのベースURLをWorkatoに指示します。 このキーは任意ですが、HTTPリクエストを定義する際に、コネクターの残りの部分で相対パスのみを指定できるようになります。 base_uriの設定の詳細については、ベースURI設定を参照してください。
TIP
このラムダ関数はconnection引数にもアクセスできます。 これは、ユーザーのインスタンスに基づいてAPIのベースURIが変わる可能性がある場合に特に便利です。 connection引数には次の形式でアクセスできます。
base_uri: lambda do |connection|
#some code here
endステップ6 - コネクションのテスト
エンドユーザーから収集する必要があるフィールドと、それらのフィールドからの入力をどう処理するかを定義したので、次にこのコネクションをテストする方法が必要です。 これはtestキーで処理されます。
test: lambda do
get(# Some accessible code)
end,このキーでは、受け取ったばかりの新しい認証情報を使用してサンプルリクエストを送信できるエンドポイントを指定する必要があります。 200 OK HTTPレスポンスを受信すると、コネクションをSuccessfulとして表示します。
コネクションSDKリファレンス
connectionキー内で使用可能なキーとそのパラメーターに慣れるには、SDKリファレンスを確認してください。
Last updated: