アプリに RSC アクセス許可を付与する

リソース固有の同意 (RSC) は、Microsoft Teams と Microsoft Graph API統合であり、アプリで API エンドポイントを使用して、organization内の特定のリソース (チーム、チャット、またはユーザー) を管理できます。

このセクションでは、次の操作を行います。

  1. Teams アプリに RSC アクセス許可を追加する
  2. チーム、チャット、またはユーザーにアプリをインストールする
  3. アプリに付与されたアプリ RSC アクセス許可を確認する

Teams アプリに RSC アクセス許可を追加する

アプリに RSC アクセス許可を追加するには、次の手順に従います。

  1. Microsoft Entra 管理センターを使用してアプリをMicrosoft ID プラットフォームに登録します
  2. アプリ マニフェスト (以前は Teams アプリ マニフェスト) を更新します

Microsoft Entra 管理センターを使用してアプリをMicrosoft ID プラットフォームに登録する

Microsoft Entra 管理センターは、アプリを登録して構成するための中央プラットフォームを提供します。 ID プラットフォームと統合し、Graph API を呼び出すには、アプリをMicrosoft Entra 管理センターに登録する必要があります。 詳細については、「 ID プラットフォームにアプリを登録する」を参照してください。

警告

複数の Teams アプリ間でMicrosoft Entraアプリ ID を共有しないでください。 Teams アプリとMicrosoft Entra アプリの間には、1 対 1 のマッピングが必要です。 同じMicrosoft Entraアプリ ID に関連付けられている複数の Teams アプリをインストールすると、インストールまたはランタイムエラーが発生します。

アプリ マニフェストを更新する

アプリ manifest.json ファイルで RSC アクセス許可を宣言する必要があります。 RSC 以外のアクセス許可をアプリ マニフェストに追加Microsoft Entra 管理センター必要はありません。

Teams アプリの RSC アクセス許可を要求する

アプリの RSC アクセス許可を要求するには、アプリ マニフェストの承認セクションで、アプリに必要なアクセス許可を一覧表示します。 この手順は、アプリマニフェストバージョンのアプリによって異なる場合があります。

注:

委任されたアクセス許可の場合は、アプリ マニフェスト v1.12 以降を使用します。

承認されたユーザーが Teams 内にアプリをインストールするたびに、アプリのマニフェストで要求された RSC アクセス許可がユーザーに表示されます。 アクセス許可は、アプリのインストール プロセスの一部として付与されます。


アプリ マニフェスト v1.12 以降の RSC アクセス許可

アプリ マニフェストに RSC アクセス許可を追加するには:

  1. 次の値を使用して 、webApplicationInfo キーをアプリ マニフェストに追加します。

    名前 説明
    id String Microsoft Entra アプリ ID。 詳細については、「Microsoft Entra 管理センターにアプリを登録する」を参照してください。
    resource String このフィールドには RSC での操作はありませんが、エラー応答を回避するために値を追加する必要があります。 任意の文字列を値として追加できます。
  2. アプリに必要なアクセス許可を追加します。

    名前 説明
    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 アクセス許可を有効にしたアプリをインストールするには、次の手順に従います。

  1. チーム、チャット、またはユーザーの 同意設定 が構成されていることを確認します。
  2. Teams でカスタム アプリをアップロードします

注:

チームまたはチャットの RSC 設定を表示するには、ユーザーに次のいずれかの Microsoft 365 ロールが必要です。

  • グローバル管理者
  • グローバル閲覧者
  • Teams 管理者
  • 特権ロール管理者

アプリケーション RSC アクセス許可のテナント レベルの制御は、リソースの種類によって異なります。

委任されたアクセス許可の場合、承認されたユーザーはアプリによって要求されたアクセス許可に同意できます。

警告

チームとチャット RSC のアクセス許可設定を管理する方法が更新されています。 政府クラウドの事前選択期間は開始され、2024 年 5 月 14 日まで続けられます。 この期間中、政府機関のクラウド組織は引き続きグループ所有者の同意を使用できます。 他のすべての組織では、PowerShell で同意設定を変更する手順を次に示します。

政府機関クラウドの組織では、2024 年 5 月 14 日まで、Microsoft Entra 管理センターでグループ所有者の同意設定を使用して同意設定を管理できます。

テナント レベルの RSC 設定は、PowerShell とGraph APIによって管理されます。 PowerShell を使用した Microsoft Graph 設定の管理の詳細については、「 Microsoft Graph PowerShell SDK の概要」を参照してください。

コマンドレットを Connect-MgGraph 使用し、次のアクセス許可を使用して接続できます。

  1. TeamworkAppSettings.ReadWrite.All
  2. Policy.ReadWrite.Authorization
  3. Policy.ReadWrite.PermissionGrant
  4. 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 がテナントで有効になっているかどうかを制御します。

スクリーンショットは、Graph RSC ユーザー構成を示しています。

プロパティの isUserPersonalScopeResourceSpecificConsentEnabled 既定値は、ユーザーの RSC を最初に使用するときに、テナントで ユーザーの同意設定 をオンまたはオフにするかどうかに基づいています。 既定値は、次のいずれかの場合に定義されます。

  • TeamsAppSettings は初めて取得されます。
  • RSC アクセス許可を持つ Teams アプリは、ユーザーに対してインストールされます。

注:

管理制御が追加され、アクセスされるデータの機密性に基づいて RSC 同意設定が許可またはブロックされます。 これは、テナント内のすべてのアプリに対するアプリ RSC アクセス許可の同意設定を有効または無効にする単一のマスター スイッチに基づくわけではありません。


Teams でカスタム アプリをアップロードする

Teams 管理者がカスタム アプリのアップロードを許可している場合は、 カスタム アプリを 特定のチーム、チャット、またはユーザーに直接アップロードできます。

アプリに付与されたアプリ RSC アクセス許可を確認する

アプリの RSC アクセス許可を確認するには、次の手順に従います。

  1. Microsoft ID プラットフォームからアクセス トークンを取得します。
  2. 特定のリソースに付与された 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 アプリのマニフェストの プロパティと照合することで、Teams アプリと webApplicationInfo.Id 関連付けることができます。

  • 委任された RSC アクセス許可は、Teams クライアント専用のアクセス許可です。 ユーザーがアプリと対話するときにこれらのアクセス許可が付与されるため、チームにインストールされているアプリの一覧を取得したり、チャットしたりすることはできません。

重要

RSC のアクセス許可は、ユーザーに帰属しません。 呼び出しは、ユーザー委任アクセス許可ではなく、アプリケーションのアクセス許可を使用して行われます。 アプリは、タブの削除など、ユーザーが実行できないアクションを実行できます。RSC API 呼び出しを行う前に、使用するチーム所有者またはチャット所有者の意図を確認する必要があります。 詳細については、「Microsoft Teams API の概要」を参照してください。

アプリがリソースにインストールされたら、Microsoft Graph エクスプローラーを使用して、リソース内のアプリに付与されているアクセス許可を表示できます。

チームで追加された RSC アクセス許可をアプリで確認する

  1. Teams からチームの groupId を取得します。

  2. Teams で、左側のウィンドウから [Teams ] を選択します。

  3. アプリをインストールするチームを選択します。

  4. そのチームの省略記号 ●●● を選択します。

  5. ドロップダウン リストから [ チームへのリンクを取得 する] を選択します。

  6. [チームへのリンクを取得する] ポップアップ ダイアログから groupId 値をコピーして保存します。

  7. Microsoft Graph エクスプローラーにサインインする。

  8. このエンドポイントへの GET 呼び出しを行います: https://graph.microsoft.com/beta/teams/{teamGroupId}/permissionGrants

    応答のフィールドは clientAppId 、アプリ マニフェストで指定された に webApplicationInfo.id マップする必要があります。

    スクリーンショットは、チーム RSC アクセス許可の GET 呼び出しに対する Graph エクスプローラーの応答を示しています。

特定のチームにインストールされているアプリの詳細を取得する方法の詳細については、「指定したチームにインストールされているアプリの名前とその他の詳細を取得する」を参照してください。

チャットで追加された RSC アクセス許可をアプリで確認する

  1. Teams Web クライアントからチャット スレッド ID を取得します。

  2. Teams Web クライアントで、左側のウィンドウから [ チャット ] を選択します。

  3. ドロップダウン リストからアプリをインストールしたチャットを選択します。

  4. Web URL をコピーし、文字列からチャット スレッド ID を保存します。

    Web URL からのチャット スレッド ID を示すスクリーンショット。

  5. Microsoft Graph エクスプローラーにサインインする。

  6. 次のエンドポイントへの GET 呼び出しを行います: https://graph.microsoft.com/beta/chats/{chatId}/permissionGrants

    応答のフィールドは clientAppId 、アプリ マニフェストで指定された に webApplicationInfo.id マップする必要があります。

    チャット RSC アクセス許可の GET 呼び出しに対する Graph エクスプローラーの応答を示すスクリーンショット。

特定のチャットにインストールされているアプリの詳細を取得する方法の詳細については、「指定したチャットにインストールされているアプリの名前とその他の詳細を取得する」を参照してください。

ユーザーに対して追加された RSC アクセス許可がないかアプリを確認する

  1. Get user API を使用します。 要求 URL で、ユーザーの UPN を渡し、応答本文から ユーザーの ID として フィールドを使用 id します。

  2. Microsoft Graph エクスプローラーにサインインする。

  3. このエンドポイントへの GET 呼び出しを行います: https://graph.microsoft.com/beta/users/{user-id}/permissionGrants

    または、 の代わりにユーザーの UPN を user-id渡すことができます。

    応答のフィールドは clientAppId 、Teams アプリ マニフェストで指定された にマップ webApplicationInfo.id する必要があります。

    ユーザー RSC アクセス許可の GET 呼び出しに対する Graph エクスプローラーの応答を示すスクリーンショット。

ユーザー用にインストールされているアプリの詳細を取得する方法の詳細については、「ユーザー用 にインストールされたアプリの名前やその他の詳細を取得する」を参照してください。

コード サンプル

サンプルの名前 説明 .NET Node.js アプリ マニフェスト
リソース固有の同意 (RSC) このサンプル コードでは、RSC を使用して Graph API を呼び出すプロセスについて説明します。 表示 表示 表示

関連項目