Microsoft Graph アプリケーション オブジェクト には、リソース API とアクセス許可に関する情報を持つオブジェクトのコレクションである requiredResourceAccess プロパティが含まれています。 このプロパティを使用して、次の手順で説明するように Azure AD Graph のアクセス許可を構成します。
手順 1: アプリで必要な Azure AD Graph アクセス許可のアクセス許可 ID を特定する
アプリに必要な Azure AD Graph のアクセス許可、アクセス許可 ID、アプリ ロール (アプリケーションのアクセス許可) または oauth2PermissionScopes (委任されたアクセス許可) を特定します。 詳細については、「 Azure AD Graph のアクセス許可リファレンス」を参照してください。
Azure AD Graph は servicePrincipal オブジェクトとして識別され、 00000002-0000-0000-c000-000000000000 はグローバルに一意の appId として、 Windows Azure Active Directory は displayName と appDisplayName として識別されます。 次の要求を実行して、テナント内の Azure AD Graph のサービス プリンシパル オブジェクトを取得します。
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000002-0000-0000-c000-000000000000'
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "appId eq '00000002-0000-0000-c000-000000000000'";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphserviceprincipals "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals"
//other-imports
)
requestFilter := "appId eq '00000002-0000-0000-c000-000000000000'"
requestParameters := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
servicePrincipals, err := graphClient.ServicePrincipals().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "appId eq '00000002-0000-0000-c000-000000000000'";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.service_principals.service_principals_request_builder import ServicePrincipalsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetQueryParameters(
filter = "appId eq '00000002-0000-0000-c000-000000000000'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.service_principals.get(request_configuration = request_configuration)
応答オブジェクトでは、Azure AD Graph アプリケーションのアクセス許可の詳細が appRoles オブジェクトに一覧表示され、委任されたアクセス許可の詳細は oauth2PermissionScopes オブジェクトに一覧表示されます。
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals",
"value": [
{
"id": "1804a6f8-e623-4520-8f40-ba1b0c11c42d",
"accountEnabled": true,
"appDisplayName": "Windows Azure Active Directory",
"appDescription": null,
"appId": "00000002-0000-0000-c000-000000000000",
"appOwnerOrganizationId": "f8cdef31-a31e-4b4a-93e4-5f571e91255a",
"appRoleAssignmentRequired": false,
"displayName": "Windows Azure Active Directory",
"servicePrincipalNames": [
"https://graph.windows.net",
"00000002-0000-0000-c000-000000000000/graph.microsoftazure.us",
"00000002-0000-0000-c000-000000000000/graph.windows.net",
"00000002-0000-0000-c000-000000000000/directory.windows.net",
"00000002-0000-0000-c000-000000000000",
"https://graph.windows.net/",
"https://graph.microsoftazure.us"
],
"servicePrincipalType": "Application",
"signInAudience": "AzureADMultipleOrgs",
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allows the app to read applications and service principals without a signed-in user",
"displayName": "Read all applications",
"id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
"isEnabled": true,
"origin": "Application",
"value": "Application.Read.All"
}
],
"oauth2PermissionScopes": [
{
"adminConsentDescription": "Allows users to sign in to the app, and allows the app to read the profile of signed-in users. It also allow the app to read basic company information of signed-in users.",
"adminConsentDisplayName": "Sign in and read user profile",
"id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
"isEnabled": true,
"type": "User",
"userConsentDescription": "Allows you to sign in to the app with your work account and let the app read your profile. It also allows the app to read basic company information.",
"userConsentDisplayName": "Sign you in and read your profile",
"value": "User.Read"
}
]
}
]
}
前述の切り捨てられた出力から、 311a71cc-e848-46a1-bdf8-97ff7156d8e6 は User.Read 委任されたアクセス許可のアクセス許可 ID、 3afa6a7d-9b1a-42eb-948e-1650a849e176 は Azure AD Graph の Application.Read.All アプリケーションアクセス許可のアクセス許可 ID です。
手順 2: Azure AD Graph のアクセス許可をアプリに追加する
次の例では、 Update アプリケーション API を呼び出して、Azure AD Graph User.Read と Application.Read.All の委任されたアクセス許可とアプリケーションアクセス許可を、オブジェクト ID 581088ba-83c5-4975-b8af-11d2d7a76e98で識別されるアプリ登録に追加します。
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new Application
{
RequiredResourceAccess = new List<RequiredResourceAccess>
{
new RequiredResourceAccess
{
ResourceAppId = "00000002-0000-0000-c000-000000000000",
ResourceAccess = new List<ResourceAccess>
{
new ResourceAccess
{
Id = Guid.Parse("311a71cc-e848-46a1-bdf8-97ff7156d8e6"),
Type = "Scope",
},
new ResourceAccess
{
Id = Guid.Parse("3afa6a7d-9b1a-42eb-948e-1650a849e176"),
Type = "Role",
},
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Applications["{application-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Application application = new Application();
LinkedList<RequiredResourceAccess> requiredResourceAccess = new LinkedList<RequiredResourceAccess>();
RequiredResourceAccess requiredResourceAccess1 = new RequiredResourceAccess();
requiredResourceAccess1.setResourceAppId("00000002-0000-0000-c000-000000000000");
LinkedList<ResourceAccess> resourceAccess = new LinkedList<ResourceAccess>();
ResourceAccess resourceAccess1 = new ResourceAccess();
resourceAccess1.setId(UUID.fromString("311a71cc-e848-46a1-bdf8-97ff7156d8e6"));
resourceAccess1.setType("Scope");
resourceAccess.add(resourceAccess1);
ResourceAccess resourceAccess2 = new ResourceAccess();
resourceAccess2.setId(UUID.fromString("3afa6a7d-9b1a-42eb-948e-1650a849e176"));
resourceAccess2.setType("Role");
resourceAccess.add(resourceAccess2);
requiredResourceAccess1.setResourceAccess(resourceAccess);
requiredResourceAccess.add(requiredResourceAccess1);
application.setRequiredResourceAccess(requiredResourceAccess);
Application result = graphClient.applications().byApplicationId("{application-id}").patch(application);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.application import Application
from msgraph.generated.models.required_resource_access import RequiredResourceAccess
from msgraph.generated.models.resource_access import ResourceAccess
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Application(
required_resource_access = [
RequiredResourceAccess(
resource_app_id = "00000002-0000-0000-c000-000000000000",
resource_access = [
ResourceAccess(
id = UUID("311a71cc-e848-46a1-bdf8-97ff7156d8e6"),
type = "Scope",
),
ResourceAccess(
id = UUID("3afa6a7d-9b1a-42eb-948e-1650a849e176"),
type = "Role",
),
],
),
],
)
result = await graph_client.applications.by_application_id('application-id').patch(request_body)
手順 2 で追加した Azure AD Graph API のアクセス許可がアプリ登録に付与されていることを確認します。
Microsoft Graph GET /application/{id} エンドポイントを呼び出し、 次のように requiredResourceAccess プロパティを読み取ります。
GET https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98?$select=id,requiredResourceAccess
Microsoft Entra 管理センターの [アプリの登録 ] ページを確認します。
手順 4: 管理者の同意を付与する
Azure AD Graph のアクセス許可を追加しましたが、アプリにこれらのアクセス許可を付与していません。 多くのアクセス許可では、組織のデータへのアクセスに使用する前に管理者の同意が必要です。 特権ロール管理者として Microsoft Entra 管理センター にサインインし、アプリの登録に対するアクセス許可に対する管理者の同意を付与します。
同意プロンプトを使用せずに API アクセス許可を付与する
Microsoft Graph および関連する SDK を使用する場合は、Microsoft Entra 管理センターを使用する必要がなく、API アクセス許可ページの [Company] ボタンの [管理者の同意を付与する] ボタンを選択しなくても、アプリ登録にアクセス許可を付与できます。 詳細については、「 プログラムによる API アクセス許可の付与または取り消し」を参照してください。
[ API のアクセス許可の要求 ] ウィンドウで、 組織が使用する API に切り替えてタブを使用し、 Windows Azure Active Directory または 00000002-0000-0000-c000-000000000000を検索します。 フィルター処理された結果セットからを選択して、[ Azure Active Directory Graph のアクセス許可] ウィンドウを表示します。