Azure App Service WebアプリでOffice365操作 ~ユーザー操作編~

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.画面下部にスクロールし、「アプリケーションの追加」をクリックします。

image004

17.「Microsoft Graph」をクリックします。

image005

18.「選択済み」に「Microsoft Graph」が表示されますので、画面下部の「✔」をクリックします。

image007

19.アプリケーションが操作できる権限を設定します。「デリゲートされたアクセス許可」のプルダウンより「Read and write directory data」にチェックを入れ、画面下部の「保存」をクリックします。

image008

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=http%3a%2f%2flocalhost%2ftest001

21.サインイン画面が表示されますので、上記1で管理ポータルにサインインしたユーザーでサインインします。

image009

認証に成功すると、ブラウザは、リダイレクトURI?code=確認コード のURLに遷移しますので、確認コードの部分をコピーしてメモ帳などに張り付けておきます。

 

Azure App Service Webアプリケーションの作成

Azure App Service にて、Office365のユーザーを操作するWebアプリケーションを作成します。
(以下の例では、Office365にユーザーを作成するアプリケーションを作成します。)

22.以下のURLよりAzureの管理ポータルにサインインします。
https://portal.azure.com/

23.画面左部のメニューから「参照」→「Marketplace」の順にクリックします。

image010

24.検索用のテキストボックスに「php」と入力してエンターを押します。

image011

25.「PHP Empty Web App」をクリックします。

image012

26.「作成」をクリックします。

image013

27.アプリ名に任意の値(Azure上で一意である必要があります)、リソースグループ名に任意の値を入力し、「作成」をクリックします。

image014

28.画面左部のメニューから「App Service」をクリックします。作成したApp Serviceが表示されますので、クリックします。

image015

29.作成したApp Serviceが選択されている状態で、画面中央の一覧を下部にスクロールし、「App Service Editor(プレビュー)」をクリックします。

image016

30.「移動→」をクリックします。

image017

31.App Service Editorが起動します。「WWWROOT」配下にある「index.php」をクリックします。

image018

32.「index.php」の編集画面が表示されます。

image019

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, http_build_query(array(
    'grant_type' => 'authorization_code',
    'code' => $_GET['code'],
    'client_id' => 'クライアントIDを記載',
    'client_secret' => 'キーを記載',
    'redirect_uri' => 'リダイレクトURIを記載
     (「クライアントID、キー、確認コードの取得」の手順8にて指定したアプリケーションを動かすURL
        例:http://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と表示されていれば、最新のコードが保存されている状態です。

image022

動作確認

【手順】

34.管理ポータルのトップ画面に戻り、画面左部のメニューから「App Service」をクリックし、作成したApp Serviceをクリックします。

image023

35.「URL」に表示されているURLが作成したApp Service のURLになります。

image024

ブラウザにて、
< App Service のURL>?code=<確認コード>
にアクセスすると該当のテナントにユーザーが作成されます。
Office365管理ポータルのユーザー一覧より作成されたユーザーが確認できます。

image025

 

Be the first to comment

コメント投稿

Your email address will not be published.


*