BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Azure AD で Microsoft Graph API のアクセス許可を追加する

Microsoft Graph API を使って情報を取得する際、デフォルトではログインしたユーザーのプロファイルしか見ることができません。ほかに情報を取得したい場合は、必要に応じてアクセス許可を追加してできるパーミッションを増やしてあげる必要があります。

ということで Azure AD でアクセス許可の追加をする方法と、必要なアクセス許可の探し方についてメモしてみました。

Graph API を使うために Azure AD でアクセス許可を設定する

アプリの登録

Azure Portal で Azure AD のリソースを開き、アプリの登録 > 新規登録 をクリックします。

以下を参考に入力します。今回は Graph API をサクッと試すだけなので設定方法は雑に進めますが、実際にはどんなクライアントアプリを使うとかどんな認証フローを使うかに応じて設定するところではあります。

  • 名前: 任意のものを入力します。
  • サポートされているアカウントの種類: 今回はとりあえず Graph API をたたきたいだけなので一番上のやつで十分です。
  • リダイレクト URI: 何も入力しなくてOKです。

入力したら 登録 をクリックします。

登録すると作成したアプリのメニューに遷移します。

シークレットの作成

Graph API を利用する際、認証フロー次第では Secret が必要になります。必要な場合は、左側のメニュー 証明書とシークレット をクリックし、新しいクライアントシークレット をクリックして作成します。

テナント ID とクライアント ID

SDK を利用する際必要になる情報となるテナント ID とクライアント ID はメニュー 概要 を開くと確認できますので必要に応じてメモしておきます。あとはやりたいこと次第で前述のシークレットが必要になります。

API のアクセス許可

本題のアクセス許可の設定です。

左側のメニューにある API のアクセス許可 をクリックして Graph API のアクセス許可の範囲を設定できます。下図のようにデフォルトでは User.Read のみが許可されています。これはサインインしてるユーザーのプロファイルを読み取る許可です。

アクセスの許可を追加をクリックしてやれることを増やします。

アクセス許可の要求 のブレードが開きます。デフォルトで開かれている Microsoft API のタブを下の方へするロールすると、Microsoft Graph がありますのでクリックします。

許可したいことに応じて 委任されたアクセス許可 または アプリケーションの許可 をクリックし、その下に表示されるアクセス許可を追加していきます。

必要なアクセス許可の探し方

アクセス許可の種類は細かく分かれてたくさんあります。それぞれのアクセス許可がどんなものなのかは以下の一覧は以下にあります。

docs.microsoft.com

この一覧から探すのは非効率で、やりたいことに応じてそのドキュメントを見ながらやる方が無難です。

ユーザーの操作に関するアクセス許可を探す

ユーザーの操作に関することなら以下のドキュメントを見ましょう。

docs.microsoft.com

ここにメソッドの一覧が出てます。例えばユーザーの一覧を取得したいのなら、メソッドの一覧にある user のリスト をクリックします。遷移先のページでどのアクセス許可が必要か書かれています。また、SDK や RES API での取得方法も書かれています。

グループの操作に関するアクセス許可を探す

グループの操作をしたい場合は以下に利用できるメソッドの一覧があります。ユーザー同様にメソッドの一覧からやりたいメソッドをクリックすると、必要なアクセス許可が確認できます。

docs.microsoft.com

その他のアクセス許可

上記のドキュメントのリンクを開いた際に、左側のメニューにおおよそやりたいことがありますのでそこからあさるといいでしょう。ぱっと見当たらなければ、アクセス許可のリファレンス から見る感じが楽だと思います。慣れ次第ですが。

あとは、今回紹介してるドキュメントのリンクは API v1.0 のリファレンスです。ここにないけど Beta 版でできる場合もあるので 、必要に応じて Beta 版のドキュメントも見ましょう。

終わりに

Graph API の SDK のブログを書くのにこの部分を書くと本質的じゃなくなりそうだったので別に切り出して書きました♪

開発で一度設定したそんなに変更しない部分なのでドキュメント見る頻度が低い分、ドキュメント内で迷子にならないためにもメモした感じでした。