Azure AD B2CをPHPと使う (4) Client Credentials Grant Flow (サーバープロセスとしてGraph APIを使う)

Auth0ではなく、Azure AD B2Cを使う理由の一つに、Microsoftのサービスとの連携があります。

たとえば、SharePointリストは非常に安価ながら大量のデータを保存できるリスト型DBとして使用できます。

もし、SharePointリストで業務データを管理しているとしたら、いつ仕様が変更されるともわからないSharePointアドオンを開発するよりも、独立したWebサイトでアプリケーションを組むほうが学習コストが低い場合があります。また、SharePointに限らず、Outlookなどを業務で使用している場合なども同様でしょう。

Webアプリケーションである場合には、Azure ADのロールで管理すれば十分でそのアプリケーションを使っている人から委任を受けてアプリケーションがGraphAPIにアクセスすることになるでしょう。

これが、Authorization Code Grant Flowです。

ユーザーの代わりにアクセスを取得する - Microsoft Graph | Microsoft Docs

 

ところでSharePointのリストの中には、管理者のみがアクセスしたいデータがある場合があります。ここで使用するのが、元は、Client Credentials Grant Flowと言われる方法ですが、現在は、事前に管理者の委任を受けたコードを保存しておく、と言った方がよいかもしれません。

docs.microsoft.com

たとえば、Firebaseのデータを定期的にSharePointにポストするといったタスクは、ユーザーの手を介さずに実行したいですね。

このドキュメントのタイトルが微妙で、いつも検索にかからないので、メモしておきます。

 

PHPからのGraphAPIの呼び出しについては、Authorization Code Grant Flowを少し変更した程度になりますので、以下のチュートリアルが参考になると思います。

Microsoft Graph を使って PHP アプリを構築する - Microsoft Graph | Microsoft Docs