PowerAutomateの認証方法

PowerAutomateのフローをAPIとして呼び出すことを前提としています。

# はじめに
PowerAutomateのフローはトリガー出来るユーザーを制限出来ます。
以下のようにアクセス制限をしたフローを呼び出すにはテナント内のユーザーであることを証明するアクセストークンが必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/97f14e12-0ee4-895d-1443-ff262cecee7a.png)
※Teamsのチャネルへメッセージを送信するフローを使います。

# この記事で出来ること
PowerAutomateのアクセス制限付きフローを呼び出す際に必要なアクセストークンを取得


# 認証について
Microsoft Graphの認証の詳細な仕組みはこちらを参考にして下さい。

https://learn.microsoft.com/ja-jp/graph/auth/auth-concepts


# 手順
## 1.AzureのEntraにアプリを作成
※こちらの記事を参考にしています。[Microsoft Teamsにつないでみた【認証編】](https://www.hulft.com/column/hulft-square-08)

### Azure Portalにログイン
https://azure.microsoft.com/ja-jp/get-started/azure-portal/

### 「Azure Active Directory」を選択しアプリの登録を行う

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/64b6c6c2-99b2-0dde-ca89-ce69e20d0167.png)

※テナントが作成されていない場合はテナントの作成から始めて下さい。

## 2. クライアントシークレットを発行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/9813564f-8dbf-b764-cbc1-feee660632df.png)

証明書とシークレットより新しいキーを発行します。大切に保管して下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/c5fad440-ef70-f78f-c1ca-d7fdaba471e3.png)

## 3. アクセストークンの取得
``HULFT Square``と``Postman``の2つの方法を記載します。
### HULFT Square
※こちらの記事を参考にしています。
[Microsoft Teamsにつないでみた【認証編】　◎HULFT Squareの設定](https://www.hulft.com/column/hulft-square-08)

コネクションの作成からはじめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/3521c56a-c9ff-c355-a7a4-76c934a2c31a.png)

アクセストークンを取得するスクリプトを用意します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/bf67f317-4c07-dbe7-19d7-58c104298105.png)

**POST実行処理**

パスに：```<tenant_id>/oauth2/v2.0/token```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/f5e4b3a1-8939-4a01-7649-783cd11a8928.png)

**・リクエスト/レスポンス/ヘッダ設定**
こちらを参考にしてください。[公式ドキュメント](https://learn.microsoft.com/ja-jp/graph/auth-v2-user?tabs=http#step-2-request-an-access-token)

**mapping**
クエリパラメータの値を入れて下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/4724c537-799b-c521-2e60-2fc3b250970f.png)

|キー|値|
|:-:|:-:|
|client_id|<1で作成したアプリのクライアントid> |
|grant_type   | client_credentials  |
|scope   | https://service.flow.microsoft.com//.default  |
|client_secret| <2で取得したシークレットキー> |

実行するとアクセストークンが取得できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/7559475c-a0e2-359c-6a1a-a97dd4c54b90.png)

### Postman

以下URLを叩きます。クエリパラメータの内容も忘れないように。
```
https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/47105dd7-89ad-19be-3dd2-840efe25bb27.png)


|キー|値|
|:-:|:-:|
|client_id|<1で作成したアプリのクライアントid> |
|grant_type   | client_credentials  |
|scope   | https://service.flow.microsoft.com//.default  |
|client_secret| <2で取得したシークレットキー> |

POSTするとアクセストークンが返ります。これで完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/8e34c07a-ea4b-f6c3-c586-154a1766dff6.png)



# 最後に
HULFT Squareで取得したアクセストークンを使ってPowerAutomateを呼び出してみました。スクリプトの内容は割愛します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/313d42f8-a841-11b9-8138-4134d8f5d46f.png)

PowerAutomateの呼び出しに成功していることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586761/93926a74-ef13-34c5-2577-63b348bf69d3.png)