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

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

このセクションでは、次のことを学びます。

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

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

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 アプリをインストールすると、インストールまたは実行時のエラーが発生します。

注:

アプリをアップロードしてテストするのと同じテナントにアプリを登録します。 アプリの登録が別のテナントにある場合は、テナント管理者のみがアプリをアップロードできます。 詳細については、「 Teams でカスタム アプリをアップロードする」を参照してください。

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

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

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

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

注:

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

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


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

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

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

    名前 説明
    id 文字列 Microsoft Entra アプリ ID。 詳細については、「Microsoft Entra 管理センターでアプリを登録する」を参照してください。
    resource 文字列 このフィールドには 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 文字列 Microsoft Entra アプリ ID。 詳細については、「Microsoft Entra 管理センターでアプリを登録する」を参照してください。
resource 文字列 このフィールドには 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 設定は、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 アクセス許可に同意できません。

注:

RSC 対応アプリケーションのカスタマイズされた同意ポリシーがorganizationで必要な場合を除き、RSC の同意設定を既定の ManagedByMicrosoft 状態のままにしておくことをお勧めします。


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 を有効または無効にすることができます。 teamsAppSettingsisUserPersonalScopeResourceSpecificConsentEnabled プロパティは、テナントでユーザー RSC が有効になっているかどうかを制御します。

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

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

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

注:

アクセスされるデータの秘密度に基づいて RSC 同意設定を許可またはブロックするための管理コントロールが追加されます。 これは、テナント内のすべてのアプリのアプリ RSC アクセス許可の同意設定を有効または無効にする単一のマスター スイッチに基づいていません。


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

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

重要

Resource-Specific 同意 (RSC) アクセス許可を必要とする Teams アプリのサイドロード中に次のエラーが発生した場合: WebApplicationInfoIdOfSideloadedAppMustBeInTheSameTenantAsUser

次のいずれかの条件が満たされていることを確認します。

  • アプリをインストールしようとしているユーザーはテナント管理者です。
  • 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 をアプリのマニフェストの webApplicationInfo.Id プロパティと照合することで、リスト内の各エントリを Teams アプリに関連付けることができます。

  • 委任された 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 クライアントで、左側のウィンドウから [Chat] を選択します。

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

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

    スクリーンショットは、Web URL からの Chat スレッド 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

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

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

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

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

コード サンプル

サンプルの名前 説明 .NET Node.js アプリ マニフェスト
リソース固有の同意 (RSC) このサンプル アプリケーションでは、リソース固有の同意 (RSC) アクセス許可を要求する方法、RSC アクセス許可を使用して Microsoft Graph を呼び出し、Teams タブを介してアクセス許可付与を列挙する方法を示します。 表示 表示 表示
RSC アクセス許可の構成 このサンプルでは、Teams アプリ マニフェストでリソース固有の同意 (RSC) アクセス許可を構成し、それらを使用して Microsoft Graph を呼び出す方法を示します。これにより、チーム チャネルとグループ チャットの両方で実際の API 応答を確認できます。 該当なし 表示 該当なし

関連項目