アプリに RSC アクセス許可を付与する
リソース固有の同意 (RSC) は、アプリが API エンドポイントを使用して組織内の特定のリソース (チーム、チャット、またはユーザー) を管理できるようにする、Microsoft Teamsと Microsoft Graph API 統合です。
このセクションでは、次の操作を行います。
Teams アプリに RSC アクセス許可を追加する
アプリに RSC アクセス許可を追加するには、次の手順に従います。
- Microsoft Entra 管理センターを使用して、アプリを Microsoft ID プラットフォームに登録します。
- アプリ マニフェスト (以前は Teams アプリ マニフェスト) を更新します。
Microsoft Entra 管理センターを使用して、アプリを Microsoft ID プラットフォームに登録する
Microsoft Entra 管理センターには、アプリを登録して構成するための中央プラットフォームが用意されています。 ID プラットフォームと統合し、Graph API を呼び出すには、Microsoft Entra 管理センターにアプリを登録する必要があります。 詳細については、「 ID プラットフォームにアプリを登録する」を参照してください。
警告
Microsoft Entra アプリ ID を複数の Teams アプリ間で共有しないでください。 Teams アプリと Microsoft Entra アプリの間には、1 対 1 のマッピングが必要です。 同じ Microsoft Entra アプリ ID に関連付けられている複数の Teams アプリをインストールすると、インストールまたはランタイム エラーが発生します。
アプリ マニフェストを更新する
アプリ manifest.json ファイルで RSC アクセス許可を宣言する必要があります。 Microsoft Entra 管理センターによってストアされるため、RSC 以外のアクセス許可をアプリ マニフェストに追加する必要はありません。
Teams アプリの RSC アクセス許可を要求する
アプリの RSC アクセス許可を要求するには、アプリ マニフェストの承認セクションで、アプリに必要なアクセス許可を一覧表示します。 この手順は、アプリマニフェストバージョンのアプリによって異なる場合があります。
注:
委任されたアクセス許可の場合は、アプリ マニフェスト v1.12 以降を使用します。
承認されたユーザーが Teams 内にアプリをインストールするたびに、アプリのマニフェストで要求された RSC アクセス許可がユーザーに表示されます。 アクセス許可は、アプリのインストール プロセスの一部として付与されます。
アプリ マニフェスト v1.12 以降の RSC アクセス許可
アプリ マニフェストに RSC アクセス許可を追加するには:
次の値を使用して 、webApplicationInfo キーをアプリ マニフェストに追加します。
名前 型 説明 id
String Microsoft Entra アプリ ID。 詳細については、「 Microsoft Entra 管理センターでアプリを登録する」を参照してください。 resource
String このフィールドには RSC での操作はありませんが、エラー応答を回避するために値を追加する必要があります。 任意の文字列を値として追加できます。 アプリに必要なアクセス許可を追加します。
名前 型 説明 authorization
オブジェクト アプリを実行する必要があるアクセス許可の一覧。 詳細については、「 アプリ マニフェストでの承認」を参照してください。 アプリがチームスコープとチャットスコープの両方でのインストールをサポートする場合は、チームとチャットの両方のアクセス許可を
authorization
の同じアプリ マニフェストで指定できます。
チームの RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp"
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "TeamSettings.Read.Group",
"type": "Application"
},
{
"name": "TeamSettings.ReadWrite.Group",
"type": "Application"
},
{
"name": "ChannelSettings.Read.Group",
"type": "Application"
},
{
"name": "ChannelSettings.ReadWrite.Group",
"type": "Application"
},
{
"name": "Channel.Create.Group",
"type": "Application"
},
{
"name": "Channel.Delete.Group",
"type": "Application"
},
{
"name": "ChannelMessage.Read.Group",
"type": "Application"
},
{
"name": "TeamsAppInstallation.Read.Group",
"type": "Application"
},
{
"name": "TeamsTab.Read.Group",
"type": "Application"
},
{
"name": "TeamsTab.Create.Group",
"type": "Application"
},
{
"name": "TeamsTab.ReadWrite.Group",
"type": "Application"
},
{
"name": "TeamsTab.Delete.Group",
"type": "Application"
},
{
"name": "TeamMember.Read.Group",
"type": "Application"
},
{
"name": "TeamsActivity.Send.Group",
"type": "Application"
},
{
"name": "ChannelMeeting.ReadBasic.Group",
"type": "Delegated"
},
{
"name": "ChannelMeetingParticipant.Read.Group",
"type": "Delegated"
},
{
"name": "ChannelMeetingStage.Write.Group",
"type": "Delegated"
}
]
}
}
チャット内の RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp"
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "ChatSettings.Read.Chat",
"type": "Application"
},
{
"name": "ChatSettings.ReadWrite.Chat",
"type": "Application"
},
{
"name": "ChatMessage.Read.Chat",
"type": "Application"
},
{
"name": "ChatMember.Read.Chat",
"type": "Application"
},
{
"name": "Chat.Manage.Chat",
"type": "Application"
},
{
"name": "TeamsTab.Read.Chat",
"type": "Application"
},
{
"name": "TeamsTab.Create.Chat",
"type": "Application"
},
{
"name": "TeamsTab.Delete.Chat",
"type": "Application"
},
{
"name": "TeamsTab.ReadWrite.Chat",
"type": "Application"
},
{
"name": "TeamsAppInstallation.Read.Chat",
"type": "Application"
},
{
"name": "OnlineMeeting.ReadBasic.Chat",
"type": "Application"
},
{
"name": "Calls.AccessMedia.Chat",
"type": "Application"
},
{
"name": "Calls.JoinGroupCalls.Chat",
"type": "Application"
},
{
"name": "TeamsActivity.Send.Chat",
"type": "Application"
},
{
"name": "MeetingStage.Write.Chat",
"type": "Delegated"
}
]
}
}
ユーザーの RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp"
},
"authorization": {
"permissions": {
"orgWide": []
"resourceSpecific": [
{
"name": "InAppPurchase.Allow.User",
"type": "Delegated"
},
{
"name": "TeamsActivity.Send.User",
"type": "Application"
},
]
}
}
アプリ マニフェスト v1.11 以前の RSC アクセス許可
注:
アプリ マニフェスト v1.12 以降を使用することをお勧めします。
次の値を使用して 、webApplicationInfo キーをアプリ マニフェストに追加します。
名前 | 型 | 説明 |
---|---|---|
id |
String | Microsoft Entra アプリ ID。 詳細については、「 Microsoft Entra 管理センターでアプリを登録する」を参照してください。 |
resource |
String | このフィールドには RSC での操作はありませんが、エラー応答を回避するために値を追加する必要があります。 任意の文字列を値として追加できます。 |
applicationPermissions |
文字列の配列 | アプリの RSC アクセス許可。 詳細については、「 サポートされている RSC アクセス許可」を参照してください。 |
アプリがチームスコープとチャットスコープの両方でのインストールをサポートする場合は、チームとチャットの両方のアクセス許可を applicationPermissions
の同じアプリ マニフェストで指定できます。
チームの RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp",
"applicationPermissions": [
"TeamSettings.Read.Group",
"TeamSettings.ReadWrite.Group",
"ChannelSettings.Read.Group",
"ChannelSettings.ReadWrite.Group",
"Channel.Create.Group",
"Channel.Delete.Group",
"ChannelMessage.Read.Group",
"TeamsAppInstallation.Read.Group",
"TeamsTab.Read.Group",
"TeamsTab.Create.Group",
"TeamsTab.ReadWrite.Group",
"TeamsTab.Delete.Group",
"TeamMember.Read.Group",
"TeamsActivity.Send.Group"
]
}
チャット内の RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp",
"applicationPermissions": [
"ChatSettings.Read.Chat",
"ChatSettings.ReadWrite.Chat",
"ChatMessage.Read.Chat",
"ChatMember.Read.Chat",
"Chat.Manage.Chat",
"TeamsTab.Read.Chat",
"TeamsTab.Create.Chat",
"TeamsTab.Delete.Chat",
"TeamsTab.ReadWrite.Chat",
"TeamsAppInstallation.Read.Chat",
"OnlineMeeting.ReadBasic.Chat",
"Calls.AccessMedia.Chat",
"Calls.JoinGroupCalls.Chat",
"TeamsActivity.Send.Chat"
]
}
ユーザーの RSC アクセス許可の例:
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://RscBasedStoreApp",
"applicationPermissions": [
"TeamsActivity.Send.User"
]
}
チーム、チャット、またはユーザーにアプリをインストールする
チーム、チャット、またはユーザーで RSC アクセス許可を有効にしたアプリをインストールするには、次の手順に従います。
- チーム、チャット、またはユーザーの 同意設定 が構成されていることを確認します。
- Teams でカスタム アプリをアップロードします。
注:
チームまたはチャットの RSC 設定を表示するには、ユーザーに次のいずれかの Microsoft 365 ロールが必要です。
- グローバル管理者
- グローバル閲覧者
- Teams 管理者
- 特権ロール管理者
同意設定を構成する
アプリケーション RSC アクセス許可のテナント レベルの制御は、リソースの種類によって異なります。
委任されたアクセス許可の場合、承認されたユーザーはアプリによって要求されたアクセス許可に同意できます。
警告
チームとチャット RSC のアクセス許可設定を管理する方法が更新されています。 政府クラウドの事前選択期間は開始され、2024 年 5 月 14 日まで続けられます。 この期間中、政府機関のクラウド組織は引き続きグループ所有者の同意を使用できます。 他のすべての組織では、PowerShell で同意設定を変更する手順を次に示します。
政府機関向けクラウドの組織では、Microsoft Entra 管理センターで 2024 年 5 月 14 日まで 、グループ所有者の同意設定を使用して同意設定 を管理できます。
テナント レベルの RSC 設定は、PowerShell と Graph API によって管理されます。 PowerShell を使用した Microsoft Graph 設定の管理の詳細については、「 Microsoft Graph PowerShell SDK の概要」を参照してください。
Connect-MgGraph
コマンドレットを使用し、次のアクセス許可を使用して接続できます。
TeamworkAppSettings.ReadWrite.All
Policy.ReadWrite.Authorization
Policy.ReadWrite.PermissionGrant
AppCatalog.Read.All
PowerShell 設定で使用できる状態を次に示します。各セクションでは、これらの状態を使用して設定を調整する方法の例を示します。
PowerShell の状態 | 説明 |
---|---|
ManagedByMicrosoft | これは、すべてのテナントの既定の状態です。 これにより、すべてのユーザーに対してチャットとチーム RSC のアクセス許可を同意できますが、Microsoft の裁量でいつでも変更できます。 |
EnabledForAllApps | RSC アクセス許可を要求するアプリは、テナント内のユーザー (リソース所有者) が同意できます。 |
DisabledForAllApps | ユーザーが RSC のアクセス許可に同意することはできません。 |
PowerShell コマンドレットを使用してチーム RSC を構成する
ManagedByMicrosoft、EnabledForAllApps、DisabledForAllApps などの使用可能な PowerShell 状態を使用して、チームのデータにアクセスするアプリに同意できるユーザーを構成できます。
次の例は、すべてのアプリでチーム RSC を有効にする方法を示しています。
Set-MgBetaTeamRscConfiguration -State EnabledForAllApps
PowerShell コマンドレットを使用してチャット RSC を構成する
ManagedByMicrosoft、EnabledForAllApps、DisabledForAllApps などの使用可能な PowerShell 状態を使用して、チャットのデータにアクセスするアプリに同意できるユーザーを構成できます。
次の例は、すべてのアプリでチャット RSC を有効にする方法を示しています。
Set-MgBetaChatRscConfiguration -State EnabledForAllApps
Graph API を使用してユーザーの RSC のユーザー所有者の同意設定を構成する
Graph API を使用して、ユーザーに対して RSC を有効または無効にすることができます。
teamsAppSettings の isUserPersonalScopeResourceSpecificConsentEnabled
プロパティは、ユーザー RSC がテナントで有効になっているかどうかを制御します。
isUserPersonalScopeResourceSpecificConsentEnabled
プロパティの既定値は、ユーザーの RSC を最初に使用するときに、テナントでユーザーの同意設定をオンまたはオフにするかどうかに基づいています。 既定値は、次のいずれかの場合に定義されます。
- TeamsAppSettings は初めて取得されます。
- RSC アクセス許可を持つ Teams アプリは、ユーザーに対してインストールされます。
注:
アクセスされたデータの機密性に基づいて RSC 同意設定を許可またはブロックする管理制御が追加されます。 これは、テナント内のすべてのアプリに対するアプリ RSC アクセス許可の同意設定を有効または無効にする単一のマスター スイッチに基づくわけではありません。
Teams でカスタム アプリをアップロードする
Teams 管理者がカスタム アプリのアップロードを許可している場合は、 カスタム アプリを 特定のチーム、チャット、またはユーザーに直接アップロードできます。
アプリに付与されたアプリ RSC アクセス許可を確認する
アプリの RSC アクセス許可を確認するには、次の手順に従います。
Microsoft ID プラットフォームからアクセス トークンを取得する
Graph API 呼び出しを行うには、ID プラットフォームからアプリのアクセス トークンを取得する必要があります。 アプリが ID プラットフォームからトークンを取得するには、アプリを Microsoft Entra 管理センターに登録する必要があります。 アクセス トークンには、Microsoft Graph で使用できるリソースと API に対するアプリとそのアクセス許可に関する情報が含まれています。
ID プラットフォームからアクセス トークンを取得するには、Microsoft Entra 登録プロセスから次の値が必要です。
- アプリケーション ID: Microsoft Entra 管理センターによってアプリに割り当てられたアプリ ID。 アプリでシングル サインオン (SSO) がサポートされている場合は、アプリと SSO に同じアプリ ID を使用する必要があります。
- クライアント シークレット または 証明書: アプリのパスワード、または証明書である公開キーまたは秘密キーのペア。 クライアント シークレットまたは証明書は、ネイティブ アプリには必要ありません。
- リダイレクト URI: Microsoft Entra ID から応答を受け取るためのアプリの URL。
詳細については、「ユーザーに代わってアクセスを取得する」および「ユーザーなしでアクセス権を取得する」を参照してください。
特定のリソースに付与された RSC アクセス許可を確認する
アプリ内のリソースに付与される RSC アクセス許可の種類を確認できます。
アプリケーション RSC アクセス許可の場合は、次の API を呼び出して、チーム、チャット、またはユーザーにインストールされているアプリの一覧を取得します。
これらは、この特定のリソースに付与されるすべてのアプリケーション RSC アクセス許可です。 リスト内の各エントリは、アクセス許可付与リストの
clientAppId
をアプリのマニフェストのwebApplicationInfo.Id
プロパティと照合することで、Teams アプリと関連付けることができます。委任された RSC アクセス許可は、Teams クライアント専用のアクセス許可です。 ユーザーがアプリと対話するときにこれらのアクセス許可が付与されるため、チームにインストールされているアプリの一覧を取得したり、チャットしたりすることはできません。
重要
RSC のアクセス許可は、ユーザーに帰属しません。 呼び出しは、ユーザー委任アクセス許可ではなく、アプリケーションのアクセス許可を使用して行われます。 アプリは、タブの削除など、ユーザーが実行できないアクションを実行できます。RSC API 呼び出しを行う前に、使用するチーム所有者またはチャット所有者の意図を確認する必要があります。 詳細については、「Microsoft Teams API の概要」を参照してください。
アプリがリソースにインストールされたら、 Microsoft Graph Explorer を使用して、リソース内のアプリに付与されているアクセス許可を表示できます。
チームで追加された RSC アクセス許可をアプリで確認する
Teams からチームの groupId を取得します。
Teams で、左側のウィンドウから [Teams ] を選択します。
アプリをインストールするチームを選択します。
そのチームの省略記号 ●●● を選択します。
ドロップダウン リストから [ チームへのリンクを取得 する] を選択します。
[チームへのリンクを取得する] ポップアップ ダイアログから groupId 値をコピーして保存します。
Microsoft Graph エクスプローラーにサインインする。
このエンドポイントへの GET 呼び出しを行います:
https://graph.microsoft.com/beta/teams/{teamGroupId}/permissionGrants
。応答の
clientAppId
フィールドは、アプリ マニフェストで指定されたwebApplicationInfo.id
にマップする必要があります。
特定のチームにインストールされているアプリの詳細を取得する方法の詳細については、「指定したチームにインストールされているアプリの名前とその他の詳細を取得する」を参照してください。
チャットで追加された RSC アクセス許可をアプリで確認する
Teams Web クライアントからチャット スレッド ID を取得します。
Teams Web クライアントで、左側のウィンドウから [ チャット ] を選択します。
ドロップダウン リストからアプリをインストールしたチャットを選択します。
Web URL をコピーし、文字列からチャット スレッド ID を保存します。
Microsoft Graph エクスプローラーにサインインする。
次のエンドポイントへの GET 呼び出しを行います:
https://graph.microsoft.com/beta/chats/{chatId}/permissionGrants
。応答の
clientAppId
フィールドは、アプリ マニフェストで指定されたwebApplicationInfo.id
にマップする必要があります。
特定のチャットにインストールされているアプリの詳細を取得する方法の詳細については、「指定したチャットにインストールされているアプリの名前とその他の詳細を取得する」を参照してください。
ユーザーに対して追加された RSC アクセス許可がないかアプリを確認する
Get user API を使用します。 要求 URL でユーザーの UPN を渡し、応答本文から
id
フィールドをユーザーの ID として使用します。Microsoft Graph エクスプローラーにサインインする。
このエンドポイントへの GET 呼び出しを行います:
https://graph.microsoft.com/beta/users/{user-id}/permissionGrants
。または、
user-id
の代わりにユーザーの UPN を渡すことができます。応答の
clientAppId
フィールドは、Teams アプリ マニフェストで指定されたwebApplicationInfo.id
にマップする必要があります。
ユーザー用にインストールされているアプリの詳細を取得する方法の詳細については、「ユーザー用 にインストールされたアプリの名前やその他の詳細を取得する」を参照してください。
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js | アプリ マニフェスト |
---|---|---|---|---|
リソース固有の同意 (RSC) | このサンプル コードでは、RSC を使用して Graph API を呼び出すプロセスについて説明します。 | 表示 | 表示 | 表示 |
RSC のアクセス許可を構成する | このサンプル コードでは、アプリ マニフェストで RSC アクセス許可を構成し、それらを利用して Microsoft Graph を呼び出し、インストールされているスコープで実際の応答を確認する方法を示します。 | 該当なし | 表示 | 該当なし |
関連項目
Platform Docs