0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Azure Data Factory の web アクティビティにて Salesforce の REST API を利用する際のアクセストークンを取得する方法

Last updated at Posted at 2024-06-26

概要

Azure Data Factory の web アクティビティにて Salesforce の REST API を利用する際のアクセストークンを取得する方法を共有します。現時点で実装検証が完了している下記の方法におけるアクセストークンの取得方法と無効化の方法を紹介します。

  1. OAuth 2.0 クライアントログイン情報フローによる方法
  2. OAuth 2.0 ユーザー名パスワードフローによる方法

OAuth 2.0 ユーザー名パスワードフローについては Salesforce のドキュメントにて下記のように記述されているため、OAuth 2.0 クライアントログイン情報フロー(あるいは、OAuth 2.0 Web サーバーフロー)を利用することが推奨されています。

重要 セキュリティを強化するために、ユーザー名パスワードフローの代わりに、コード交換の証明鍵 (PKCE) を使用する OAuth 2.0 Web サーバーフロー、または OAuth 2.0 クライアントログイン情報フローを使用することをお勧めします。

引用元:特別なシナリオの OAuth 2.0 ユーザー名パスワードフロー (salesforce.com)

この記事では、インテグレーションユーザーと接続アプリを作成していることを前提としています。

手順

1. OAuth 2.0 クライアントログイン情報フローによる方法

1-1. アクセストークンの取得

下記の設定をした web アクティビティを追加します。OAuth 2.0 ユーザー名パスワードフローによる方法とは、 URL が異なることに注意してください。

# 項目
1 URL https://{DomainName}.my.salesforce.com/services/oauth2/token
2 メソッド POST
3 本文 grant_type=client_credentials&client_id={ClientId}&client_secret={ClientSecret}
4 ヘッダー Content-Type: application/x-www-form-urlencoded

image.png

1-2. アクセストークンの無効化

下記の設定をした web アクティビティを追加します。

# 項目
1 URL https://{DomainName}.my.salesforce.com/services/oauth2/revoke
2 メソッド POST
3 本文 token={AccessToken}
4 ヘッダー Content-Type: application/x-www-form-urlencoded

アクセストークンは、下記のような式により前の手順で設定した Web アクティビティの出力結果をセットします。

@concat(
    'token=',
    activity('GetToken').output.access_token
)

image.png

1-3. 動作確認

デバック実行を行い、アクセストークン等を取得していることを確認してください。

image.png

OAuth 2.0 ユーザー名パスワードフローによる方法

2-1. アクセストークンの取得方法

下記の設定をした web アクティビティを追加します。

# 項目
1 URL https://login.salesforce.com/services/oauth2/token
2 メソッド POST
3 本文 grant_type=password&client_id={ClientId}&client_secret={ClientSecret}&username={UserName}&password={Password}{SecurityToken}
4 ヘッダー Content-Type: application/x-www-form-urlencoded

image.png

2-2. アクセストークンの無効化

# 項目
1 URL https://login.salesforce.com/services/oauth2/revoke
2 メソッド POST
3 本文 token={AccessToken}
4 ヘッダー Content-Type: application/x-www-form-urlencoded

アクセストークンは、下記のような式により前の手順で設定した Web アクティビティの出力結果をセットします。

@concat(
    'token=',
    activity('GetToken').output.access_token
)

image.png

2-3. 動作確認

デバック実行を行い、アクセストークン等を取得していることを確認してください。

image.png

本場利用に向けたパイプラインの改善

OAuth 2.0 クライアントログイン情報フローによる方法の改善

1. Client ID と Client Secret を Key Vault に格納

@concat(
    'grant_type=client_credentials',
    '&client_id=',
    activity('GetSFDCClientId').output.Value,
    '&client_secret=',
    activity('GetSFDCClientSecret').output.Value
)

image.png

2. トークンを取得と無効化の web アクティビティにてインラインからリンクサービスに変更

image.png

3. Key Vault の取得値やアクセストークンなどの出力と入力をセキュリティで保護された出力セキュリティで保護された入力に変更

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?