『Azure App Service WebアプリでOffice365操作』
↑こちらの記事でAzure App Service上のWebアプリケーションにてOffice365 API を使用してExchangeOnlineを操作する検証をしましたが、今回はAzure AD GraphAPIを使用してOffice365のユーザー操作をする方法について記載したいと思います。
Azure AD GraphAPIについて
Azure Active Directory (AD) Graph API を使用すると、OData REST API エンドポイントを介して Azure AD にプログラムによってアクセスすることができ、ディレクトリのデータとオブジェクトに対して、作成、読み取り、更新、削除 の各操作を実行することができます。
今回は、Office365のユーザー作成を行うアプリケーションを、Azure App Service上にPHPを使用して作成してみたいと思います。
クライアントID、キー、確認コードの取得
Office365とOAuthにより認証を行う為、アプリケーションを作成し、クライアントID、キー(クライアントシークレット)、確認コードを取得します。
【手順】
1.~15.
『Azure App Service WebアプリでOffice365操作』に記載の「クライアントID、キー、確認コードの取得」の手順1~15を行い、クライアントID、キーを取得します。
16.画面下部にスクロールし、「アプリケーションの追加」をクリックします。
17.「Microsoft Graph」をクリックします。
18.「選択済み」に「Microsoft Graph」が表示されますので、画面下部の「✔」をクリックします。
19.アプリケーションが操作できる権限を設定します。「デリゲートされたアクセス許可」のプルダウンより「Read and write directory data」にチェックを入れ、画面下部の「保存」をクリックします。
20.上記でクライアントIDとキーが取得できました。次に確認コードを取得します。
ブラウザに以下のURLを入力します。
https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=<上記で取得したクライアントID>&resource=https%3A%2F%2Fgraph.windows.net %2f&redirect_uri=<リダイレクトURI>
例:https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=80a273c8-086f-44d3-978axxxxxxxxxxx&resource= https%3A%2F%2Fgraph. windows.net %2f&redirect_uri=https%3a%2f%2flocalhost%2ftest001
21.サインイン画面が表示されますので、上記1で管理ポータルにサインインしたユーザーでサインインします。
認証に成功すると、ブラウザは、リダイレクトURI?code=確認コード のURLに遷移しますので、確認コードの部分をコピーしてメモ帳などに張り付けておきます。
Azure App Service Webアプリケーションの作成
Azure App Service にて、Office365のユーザーを操作するWebアプリケーションを作成します。
(以下の例では、Office365にユーザーを作成するアプリケーションを作成します。)
22.以下のURLよりAzureの管理ポータルにサインインします。
https://portal.azure.com/
23.画面左部のメニューから「参照」→「Marketplace」の順にクリックします。
24.検索用のテキストボックスに「php」と入力してエンターを押します。
25.「PHP Empty Web App」をクリックします。
26.「作成」をクリックします。
27.アプリ名に任意の値(Azure上で一意である必要があります)、リソースグループ名に任意の値を入力し、「作成」をクリックします。
28.画面左部のメニューから「App Service」をクリックします。作成したApp Serviceが表示されますので、クリックします。
29.作成したApp Serviceが選択されている状態で、画面中央の一覧を下部にスクロールし、「App Service Editor(プレビュー)」をクリックします。
30.「移動→」をクリックします。
31.App Service Editorが起動します。「WWWROOT」配下にある「index.php」をクリックします。
32.「index.php」の編集画面が表示されます。
33.「index.php」に以下のコードを記載します。
//Access Token 取得 $authreq = curl_init(); curl_setopt($authreq, CURLOPT_URL, 'https://login.microsoftonline.com/common/oauth2/token'); curl_setopt($authreq, CURLOPT_POST, true); curl_setopt($authreq, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt($authreq, CURLOPT_POSTFIELDS, https_build_query(array( 'grant_type' => 'authorization_code', 'code' => $_GET['code'], 'client_id' => 'クライアントIDを記載', 'client_secret' => 'キーを記載', 'redirect_uri' => 'リダイレクトURIを記載 (「クライアントID、キー、確認コードの取得」の手順8にて指定したアプリケーションを動かすURL 例:https://localhost/test002)', ))); curl_setopt($authreq, CURLOPT_RETURNTRANSFER, true); curl_setopt($authreq, CURLOPT_SSL_VERIFYPEER, false); $authres = json_decode(curl_exec($authreq)); curl_close($authreq); $access_token = $authres->access_token; //ユーザー作成 $headers = array( "Content-Type: application/json", 'Authorization: Bearer ' .$access_token ); $datareq2 = curl_init(); curl_setopt($datareq2, CURLOPT_URL, 'https://graph.windows.net/ドメイン名を記載/users?api-version=1.6'); curl_setopt($datareq2, CURLOPT_POST, true); curl_setopt($datareq2, CURLOPT_HTTPHEADER,$headers); /**作成するユーザー情報**/ $json = '{ "accountEnabled": true, "displayName": "テスト次郎", "mailNickname": "testjiro", "passwordProfile": { "password": "XXXXXXXXX", "forceChangePasswordNextLogin": false }, "usageLocation": "JP", "userPrincipalName": "testjiro@test.onmicrosoft.com"' .'}'; curl_setopt($datareq2, CURLOPT_POSTFIELDS,$json); curl_setopt($datareq2, CURLOPT_RETURNTRANSFER, true); curl_setopt($datareq2, CURLOPT_SSL_VERIFYPEER, false); curl_exec($datareq2); curl_close($datareq2);
記載したコードの保存は自動で行われます。画面上部にSAVEDと表示されていれば、最新のコードが保存されている状態です。
動作確認
【手順】
34.管理ポータルのトップ画面に戻り、画面左部のメニューから「App Service」をクリックし、作成したApp Serviceをクリックします。
35.「URL」に表示されているURLが作成したApp Service のURLになります。
ブラウザにて、
< App Service のURL>?code=<確認コード>
にアクセスすると該当のテナントにユーザーが作成されます。
Office365管理ポータルのユーザー一覧より作成されたユーザーが確認できます。