概要
はじめにおことわりしますが、今回のチャレンジは失敗です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"
}
まとめ
いろいろ条件変えな試しましたが無理でした。カスタムコネクタでのテストはうまくいきますがフローにすると動作しません。毎回ハマった後にググるという悪循環なのですがこんなものが。
早速のお試し、さすがZeroSysさん!
— Miyake Mito (@MiTo60448639) May 21, 2022
しかし、よくわからない挙動ですね
betaだからなぁ、と思ったり。
自身のパスワード変更であればv1.0もあるのですが。。。https://t.co/XkEDeomMJG
結論 ベータなので仕方なし!
今回はハマりましたが、先人達がこれまでたくさん紹介されていますように、カスタムコネクタとGraph APIの相性はよさそうです。うまく利用できればと思います。(ただしv1.0のAPIが無難そうです😅)