Teams PowerShell 模块中基于应用程序的身份验证
Teams PowerShell 模块中现在支持基于应用程序的身份验证
- 商业版 4.7.1 预览版或更高版本,& GCC 环境中使用。
- GCC High & DoD 环境中的版本 5.0.1-preview 或更高版本。
支持的 Cmdlet
现在支持所有 cmdlet,下面提到的 cmdlet 除外。
- New-Team
- [获取|设置|新建|Sync]-CsOnlineApplicationInstance
- *PolicyPackage*
- *-CsTeamsShiftsConnection*
- *-CsBatchTeamsDeployment*
- [获取|Set]-CsTeamsSettingsCustomApp
- Get-MultiGeoRegion
示例
以下示例演示如何将 Teams PowerShell 模块与基于Microsoft Entra应用的身份验证配合使用:
使用证书指纹进行连接:
Connect-MicrosoftTeams -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -ApplicationId "00000000-0000-0000-0000-000000000000" -TenantId "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
使用 CertificateThumbprint 参数时,需要在运行命令的计算机上安装证书。 证书应安装在用户证书存储中。
使用证书对象进行连接:
Connect-MicrosoftTeams -Certificate <%X509Certificate2 object%> -ApplicationId "00000000-0000-0000-0000-000000000000" -TenantId "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
使用 Certificate 参数时,无需在运行命令的计算机上安装证书。 运行脚本时,可以远程存储证书 & 提取证书。 Teams PowerShell 模块版本 4.9.2-preview 或更高版本中提供了 Certificate 参数。
使用访问令牌进行连接:
可以通过 login.microsoftonline.com 终结点检索访问令牌。 它需要两个访问令牌 -“MS Graph”和“Skype 和 Teams 租户管理员 API”资源。
$ClientSecret = "…" $ApplicationID = "00000000-0000-0000-0000-000000000000" $TenantID = "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" $graphtokenBody = @{ Grant_Type = "client_credentials" Scope = "https://graph.microsoft.com/.default" Client_Id = $ApplicationID Client_Secret = $ClientSecret } $graphToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token" -Method POST -Body $graphtokenBody | Select-Object -ExpandProperty Access_Token $teamstokenBody = @{ Grant_Type = "client_credentials" Scope = "48ac35b8-9aa8-4d74-927d-1f4a14a0b239/.default" Client_Id = $ApplicationID Client_Secret = $ClientSecret } $teamsToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token" -Method POST -Body $teamstokenBody | Select-Object -ExpandProperty Access_Token Connect-MicrosoftTeams -AccessTokens @("$graphToken", "$teamsToken")
它是如何工作的?
Teams PowerShell 模块使用应用程序 ID、租户 ID 和证书指纹提取基于应用的令牌。 在 Microsoft Entra ID 中预配的应用程序对象具有分配给它的目录角色,该角色在访问令牌中返回。 会话的基于角色的访问控制 (RBAC) 是使用令牌中提供的目录角色信息配置的。
设置基于应用程序的身份验证
使用应用程序对象进行身份验证需要初始载入。 应用程序和服务主体可互换使用,但应用程序类似于类对象,而服务主体类似于 类的实例。 有关这些对象的详细信息,请参阅 Microsoft Entra ID 中的应用程序和服务主体对象。
下面介绍了在 Microsoft Entra ID 中创建应用程序的示例步骤。 有关详细步骤,请参阅 本文。
- 在 Microsoft Entra ID 中注册应用程序。
- 为应用程序分配 API 权限。
- 对于 *-Cs cmdlet - 所需的Microsoft图形 API权限为
Organization.Read.All
。 - 对于非 *-Cs cmdlet - 所需的Microsoft图形 API权限为
Organization.Read.All
、、User.Read.All
、Group.ReadWrite.All
、AppCatalog.ReadWrite.All
TeamSettings.ReadWrite.All
、Channel.Delete.All
ChannelSettings.ReadWrite.All
、 。ChannelMember.ReadWrite.All
- 注意 - 无需为“Skype 和 Teams 租户管理员 API”配置任何 API 权限。 配置此权限可能会导致失败。
- 对于 *-Cs cmdlet - 所需的Microsoft图形 API权限为
- 生成自签名证书。
- 将证书附加到 Microsoft Entra 应用程序。
- 将Microsoft Entra角色分配给应用程序。 请参阅此 分配角色 过程,但搜索应用程序而不是用户。
应用程序需要分配适当的 RBAC 角色。 由于应用是在 Microsoft Entra ID 中预配的,因此可以使用任何受支持的内置角色。