Power Automate カスタムコネクタからMicrosoft Graph REST API passwordAuthenticationMethod: resetPasswordを使ってみた

概要

はじめにおことわりしますが、今回のチャレンジは失敗ですw 「今のところできない」というがわかった事が収穫です。

気ままに勉強会 #16に参加させていただきました。 Miyake MitoさんからMicrosoft Graph REST APIの利用方法とPower Automateからの認証認可についてお話しいただけました。そのなかでpasswordAuthenticationMethod: resetPasswordという、ユーザーパスワードをリセットするAPIを紹介されていました。これは便利そう!ということで早速カスタムコネクタ化してみます。

環境など

  • Microsoft Graph REST API betaの機能
  • Azureの「アプリの登録」を使用
  • Microsoft 365 開発者プログラム
  • Power Automate試用版が有効
  • グローバル管理者権限
  • 2022年5月の情報です

アプリの登録

シングルテナントでアプリを登録しました。先人たちの紹介がたくさんありますが、記録として残しておきます。

認証はプラットフォームをWebで追加してリダイレクト先をhttps://global.consent.azure-apim.net/redirectにして構成します。

クライアントシークレットを作成し控えておきます。

APIアクセス許可の要求からMicrosoft Graph APIを選択し。委任されたアクセス許可で進みます。

UserAuthenticationMethod.ReadWrite.Allを選択してアクセス許可の追加をします。

カスタムコネクタの作成

一から作成を選択します。

セキュリティを設定します。

Azureアプリ登録画面の概要およびエンドポイントで確認し入力します。

Graph APIの場合、スコープをUserAuthenticationMethod.ReadWrite.All, User.Readのようにリソース拡張子(URL)を省略して書けます。さらにめんどくさい時は.defaultとすると、アプリ許可したAPIすべてをスコープに含める挙動を取ります。

またTenant IDはcommonでも可能です。

Login URLの設定については私の環境では次のいずれかでも可能でした。

  • https://login.microsoftonline.com
  • https://login.microsoft.com
  • https://login.windows.net

参考Docs 

少し省略しすぎな気もしますが次のように入力しても動作しました。

アクションの定義を設定します。

Docs passwordAuthenticationMethod: resetPasswordを参考に設定します。

新しいアクションを追加

URLを次のように設定します。idについては28c10230-6103-485e-b985-444c60001490で固定のようです。

いくつかアカウントを変えて

GET /users/{id | userPrincipalName}/authentication/passwordMethods/

を試しましたが、Docsのサンプルと同じ値が返ってきました。

URL

https://graph.microsoft.com/beta/users/{userPrincipalName}/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword

本文

{
  "newPassword": "{NewPassword}"
}

コネクタを保存、更新したらテストに移動します。

新しい接続を作成します。

アカウントを選択します。

アクセス許可を承諾します。

パスワードをリセットするユーザーと仮パスワードを入力しテストします。

Docsと同じく応答に202がかえってきました。

うまくいったのでフローでテストします。

フローの作成

インスタントクラウドフローで簡単にテストします。

ここまでできれば余裕だと思っていました。

テスト実行します。

{
  "statusCode": 404,
  "message": "Resource not found"
}

まとめ

いろいろ条件変えな試しましたが無理でした。カスタムコネクタでのテストはうまくいきますがフローにすると動作しません。毎回ハマった後にググるという悪循環なのですがこんなものが。

Resource not found #11162

結論 ベータなので仕方なし!

今回はハマりましたが、先人達がこれまでたくさん紹介されていますように、カスタムコネクタとGraph APIの相性はよさそうです。うまく利用できればと思います。(ただしv1.0のAPIが無難そうです😅)