首页 > 解决方案 > 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' 

标签: azureoffice365azure-active-directory

解决方案


答案在这篇文章中 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 调用,所有这些都无需用户登录,使用客户端凭据流。


推荐阅读