azure - Azure 功能、应用注册、证书 - New-PnPTenantSite :远程服务器返回错误:(401)未经授权
问题描述
我正在尝试创建一个 Azure 函数来预配不同类型的站点。
我在 Azure AD 中创建了一个应用程序并授予了应用程序共享点和图表。
连接到站点时,我使用证书,但无法创建新站点。
New-PnPTenantSite -Url $url -Title $LinkTitle -Description $description -Template "STS#0" -Owner $username -TimeZone 4 -Lcid 1044 -Force
错误:
New-PnPTenantSite : 远程服务器返回错误: (401) Unauthorized
如果我使用 get-pnplist 和 get-pnpsite ,它会返回站点和列表。
使用此命令进行连接:
Connect-PnPOnline -CertificatePath .\certkeyname.pfx -Tenant 'xxx.onmicrosoft.com' -ClientId 'xxxx-xxx-xx-xx-xxxxxxx' -Url 'https://xxx.sharepoint.com'
解决方案
答案在这篇文章中 Azure AD application with Global Administrator rights
您可以通过将应用程序的服务主体添加到公司管理员目录角色来提升应用程序在租户中的访问级别。这将赋予应用程序与公司管理员相同级别的权限,后者可以做任何事情。您可以根据要授予此应用程序的访问级别,对任何类型的目录角色遵循这些相同的说明。
请注意,这只会影响您的应用在租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
为了进行更改,您需要安装 Azure Active Directory PowerShell 模块。
安装模块后,使用管理员帐户向租户进行身份验证:
Connect-MSOLService 然后我们需要获取我们想要提升的服务主体的对象 ID,以及您的租户的公司管理员角色。
按应用 ID GUID 搜索服务主体:
$sp = Get-MsolServicePrincipal -AppPrincipalId 按名称搜索目录角色
$role = Get-MsolRole -RoleName "Company Administrator" 现在我们可以使用 Add-MsolRoleMember 命令将此角色添加到服务主体。
Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal ->RoleMemberObjectId $sp.ObjectId 要检查一切是否正常,让我们取回 Company >Administrator 角色的所有成员:
Get-MsolRoleMember -RoleObjectId $role.ObjectId 您应该在该列表中看到您的应用程序,其中 RoleMemberType 是 ServicePrincipal > 并且 DisplayName 是您的应用程序的名称。
现在,您的应用程序应该能够执行公司 > 管理员可以执行的任何图形 API 调用,所有这些都无需用户登录,使用客户端凭据流。
推荐阅读
- javascript - 将 chrome 活动 URL 从 chrome 扩展发送到 google 应用脚本(网络应用)
- protractor - 量角器将数据驱动的测试分成不同的规格
- c++ - 将字符串拆分为标记并将标记分成两个单独的数组
- php - 检查变量是否存在动态变量名和动态键名和深度
- regex - 正则表达式模式匹配 replaceFirst 不替换
- at-command - Oncomm 事件偶尔会触发
- android - 如何在 Android 的片段上显示从 Firebase 云消息接收到的数据?
- sql - sql可以向节点应用程序发送事件吗?
- reactjs - 如果使用索引作为 ReactJs 键不好。那我应该用什么?
- node.js - 读取 zip 文件(文件夹)并将其写入目标