Teams でリソース固有の同意アクセス許可をテストする

リソース固有の同意 (RSC) は、アプリケーションへのスコープ付きアクセスを許可する Microsoft Teams と Microsoft ID によって構築された承認フレームワークです。

RSC を使用すると、承認されたユーザーは、テナント全体のすべてのインスタンスではなく、リソースの種類の特定のインスタンスのデータへのアクセス権をアプリケーションに付与できます。 たとえば、チーム A とチーム B の両方を所有するユーザーは、Contoso アプリのデータをチーム B ではなくチーム A にのみ提供することを決定できます。スコープ付きデータ アクセスの概念は、チャットや会議にも当てはまります。 詳細については、「 リソース固有の同意 (RSC)」を参照してください。

前提条件

テストする前に、リソース固有の同意に対して次のアプリ マニフェストの変更を確認してください。


アプリ マニフェスト バージョン 1.12 以降の RSC アクセス許可

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

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

アプリで必要なアクセス許可を指定します。

名前 種類 説明
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": "ChannelMeeting.ReadBasic.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"
            }
        ]    
    }
}

チャット内の 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"
            }
        ]    
    }
}

注:

アプリがチーム スコープとチャット スコープの両方でのインストールをサポートすることを意図している場合は、チームとチャットの両方のアクセス許可を authorization の下の同じマニフェストで指定できます。


アプリ マニフェスト バージョン 1.11 以前の RSC アクセス許可

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

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

チーム内の 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",
        "ChannelMeeting.ReadBasic.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"
    ]
  }

注:

アプリがチーム スコープとチャット スコープの両方でのインストールをサポートすることを意図している場合は、チームとチャットの両方のアクセス許可を applicationPermissions の下の同じマニフェストで指定できます。

Important

アプリ マニフェストには、アプリに付与する RSC アクセス許可のみを含めます。

注:

アプリが呼び出し元またはメディア API にアクセスする場合は、webApplicationInfo.IdAzure Bot Serviceの Microsoft Entra アプリ ID を指定する必要があります。

Postman アプリを使用してチームに RSC アクセス許可を追加したテスト

RSC 権限が API リクエストペ イロードによって受け入れられているかどうかを確認するには、チームの RSC JSON テスト コードをローカル環境にコピーし、次の値を更新する必要があります。

  • azureADAppId: アプリのMicrosoft Entraアプリ ID。

  • azureADAppSecret: Microsoft Entraアプリのパスワード。

  • token_scope: トークンを取得するにはスコープが必要です。 値を に設定します https://graph.microsoft.com/.default

  • teamGroupId: 次のように Teams クライアントからチーム グループ ID を取得できます。

    1. Teams クライアントで、左端のナビゲーション バーから Teams を選択します。
    2. ドロップダウン メニューから、アプリがインストールされているチームを選択します。
    3. [ その他のオプション ] アイコン (⋯) を選択します。
    4. [チームへのリンクを取得する] を選択します。
    5. 文字列から groupId 値をコピーして保存します。

Postman アプリを使用してチャットに RSC アクセス許可を追加したテスト

API 要求ペイロードによって RSC アクセス許可が受け入れられているかどうかを確認するには、[チャット用の RSC JSON テスト コード] をローカル環境にコピーし、次の値を更新する必要があります。

  • azureADAppId: アプリのMicrosoft Entraアプリ ID。

  • azureADAppSecret: Microsoft Entraアプリのパスワード。

  • token_scope: トークンを取得するにはスコープが必要です。 値を に設定します https://graph.microsoft.com/.default

  • tenantId: テナントの名前またはMicrosoft Entra オブジェクト ID。

  • chatId: 次のように、Teams Web クライアントからチャット スレッド ID を取得できます。

    1. Teams Web クライアントで、左端のナビゲーション バーから [チャット] を選択します。
    2. ドロップダウン メニューから、アプリがインストールされているチャットを選択します。
    3. Web URL をコピーし、文字列からチャット スレッド ID を保存します。 Web URL からのチャット スレッド ID。

Postman の使用

  1. Postman アプリを開きます。
  2. [ファイル]>[インポート]>[ファイルのインポート] の順に選択して、更新された JSON ファイルを環境からアップロードします。
  3. [コレクション] タブをクリックします。
  4. TestRSC の横にあるシェブロン > を選択して、詳細ビューを展開し、API リクエストを確認します。

API 呼び出しごとにアクセス許可コレクション全体を実行します。 アプリ マニフェストで指定したアクセス許可は成功する必要がありますが、指定されていないアクセス許可は HTTP 403 状態コードで失敗する必要があります。 すべての応答状態コードを確認して、アプリ内の RSC アクセス許可の動作が期待を満たしていることを確認します。

注:

特定の DELETE および READ API 呼び出しをテストするには、これらのインスタンス シナリオを JSON ファイルに追加します。

Postman を使用して失効した RSC アクセス許可をテストする

  1. 特定のリソースからアプリをアンインストールします。
  2. チャットまたはチームのいずれかの手順に従います。
    1. Postman を使用してチームに RSC アクセス許可を追加しました
    2. Postman を使用してチャットに RSC アクセス許可を追加しました
  3. HTTP 403 状態コードで特定の API 呼び出しが失敗したことを確認するには、すべての応答状態コードを確認します。

関連項目