1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GraphAPI】Graph Explorer (2):管理者の同意

Last updated at Posted at 2025-05-12

はじめに

※ この投稿は以下の記事の続きです。

Graph Explorer からユーザー委任権限で Graph API を実行するためには、アクセス許可の付与が必要です。

この際に、一部のアクセス許可については、管理者の同意が必要となります。Graph API のアクセス許可を付与する際の、管理者の同意について紹介しています。

4. チームにメンバーを追加する

3. チームを作成する で作成したチームに、Graph API でチームメンバーを追加してみます。

以下の [チームにメンバーを追加する] Graph API を使用します。
(参考:チームにメンバーを追加する)
https://learn.microsoft.com/ja-jp/graph/api/team-post-members?view=graph-rest-1.0&tabs=http

4.1 URL の変更

Graph API の公開情報の HTTP 要求 を確認すると、以下のように記載されています。

HTTP 要求
POST /teams/{team-id}/members

"{team-id}" と記載されているところは、チームメンバーを追加したチームの ID に置き換える必要があります。

今回のように、特定のデータに対して Graph API で操作を行う場合には、URL の中で対象となるデータの ID をし指定します。

チーム ID の確認

作成したチームの ID を Graph API で確認してみます。

2. チームの一覧情報を取得する で使用した、チームを一覧表示する Graph API を使用します。

Graph API では、フィルタ条件 ($filter) を指定して、取得する結果をキーワードで絞り込むことができます

例えば、"テストチーム01" という名前のチームの情報を取得したい場合には、URL の最後に以下のような条件を追加します。

https://graph.microsoft.com/v1.0/teams?$filter=startswith(displayName,'テストチーム01') 

[Run query] から実行すると、フィルタ条件で指定した名前のチームの情報が取得されます。[Response preview]"id" の値がチーム ID です。

image.png

{team-id} を取得した ID で置き換えると、URL は以下のようになります。

POST /teams/d4923767-ea0d-4168-9422-108464d47b6d/members

(参考:フィルター クエリ 演算子を使用した例)
https://learn.microsoft.com/ja-jp/graph/filter-query-parameter?tabs=http#examples-using-the-filter-query-operator

フィルタ条件をサポートしていない Graph API もあります。各 Graph API がフィルタ条件をサポートしているかどうかは、公開情報の オプションのクエリ パラメーター セクションに記載されています。

4.2. 送信データの設定

次に、3.2 送信データの設定と同じように、チームに追加するメンバーを送信データで指定します。

公開情報に記載されている例を確認します。
(参考:例 1: チームにメンバーを追加する)
https://learn.microsoft.com/ja-jp/graph/api/team-post-members?view=graph-rest-1.0&tabs=http#example-1-add-a-member-to-a-team

{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": ["owner"],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('8b081ef6-4792-4def-b2c9-c363a1bf41d5')"
}

設定箇所 意味
roles 追加するユーザーのロール
所有者 (owner) またはメンバー (member)
user@odata.bind 追加するユーザーの ID

追加するユーザーの ID は "https://graph.microsoft.com/v1.0/users('xxx')" の 'xxx' で指定します。

ユーザー ID の確認

チーム ID と同様に、ユーザー一覧を取得する Graph API でフィルタ条件を使用して特定のユーザーを検索します。

(参考:ユーザーを一覧表示する)
https://learn.microsoft.com/ja-jp/graph/api/user-list?view=graph-rest-1.0&tabs=http

https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'テスト ユーザー02')

image.png

取得した ユーザー ID で置き換えます。今回は "roles" を "member" にしてメンバーとして追加してみます。

  • 送信データ (Request Body)
{
    "@odata.type": "#microsoft.graph.aadUserConversationMember",
    "roles": ["member"],
    "user@odata.bind": "https://graph.microsoft.com/v1.0/users('0963c34e-f94e-49cf-bab8-b6b620fdb66f')"
}

Graph Explorer で URL と合わせて送信データを以下のように入力します。

  • URL
POST https://graph.microsoft.com/v1.0/teams/d4923767-ea0d-4168-9422-108464d47b6d/members

image.png

4.3 アクセス許可の付与 (管理者の同意)

次に、3.3 アクセス許可の付与 と同様に [Modify Permissions] タブから "TeamMember.ReadWrite.All" アクセス許可を付与します。

image.png

しかし、一般ユーザーでログインしていると、[Consent] ボタンをクリックした際に以下のようなダイアログが表示され、アクセスを許可することができません。

image.png

[Modify Permissions] タブをよく見ると、[Admin consent required] (管理者の同意が必要) が "Yes" となっています。このようなアクセス権限は一般ユーザーでは許可することができません

image.png

管理者の同意を行うために必要な管理者ロール

このようなアクセス許可は、以下のような管理者ロールを割り当てられている管理者ユーザーのみ、許可することができます。

  • 特権ロール管理者
  • クラウドアプリケーション管理者
  • アプリケーション管理者

(参考:前提条件)
https://learn.microsoft.com/ja-jp/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal#prerequisites

image.png

上記のようなロールが割り当てられているユーザーで Graph Explorer にサインインして、同様に [Consent] ボタンをクリックすると、アクセスを許可するダイアログが表示されます。

image.png

image.png

[組織の代理として同意する] に✅すると、組織内の一般ユーザーもこのアクセス許可を使用して Graph API を実行することができるようになります。

一般ユーザーが実行することを許可したくない場合には [組織の代理として同意する] を✅しないようにします。

アクセス許可を付与したら、[Run query] をクリックします。

image.png

Teams クライアントから確認すると、指定したユーザーがチームにメンバーとして追加されています。

image.png

4.4 補足

管理者の同意を取り消す方法

Graph Explorer から管理者が同意したアクセス許可は、Entra ID 管理センターから取り消すことができます。

  1. Entra ID 管理センターから [アプリケーション] - [エンタープライズアプリケーション] - [Graph Explorer] をクリックします
    image.png
  2. [アクセス許可] - [管理者の同意] タブから取り消したいアクセス許可の右側 […] より [アクセス許可の取り消し] をクリックします
    image.png
  3. 確認ダイアログが表示され、[はい、取り消します] をクリックするとアクセス許可を取り消すことができます

すべてのアクセス許可で管理者の同意を必要とする方法

既定では [Admin consent required]"No" となっているアクセス許可は管理者の同意なくユーザーが利用できます。

以下の手順で、すべてのアクセス許可について管理者の同意が必要にできます。

  1. Entra 管理センターから [アプリケーション] - [エンタープライズアプリケーション] - [同意とアクセス許可] をクリックします
    image.png
  2. [ユーザーの同意設定][ユーザーの同意を許可しない] を選択し、[保存] します
    image.png

この設定を行うと、すべてのアクセス許可で管理者の同意が必要となります。ユーザーが管理者の同意していないアクセス許可を利用しようとすると、以下のダイアログが表示されます。

image.png

(参考:ユーザーがアプリケーションに同意する方法を構成する)
https://learn.microsoft.com/ja-jp/entra/identity/enterprise-apps/configure-user-consent?pivots=portal

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?