使用 Pnp-Powershell 时需要什么类型的 accessToken scope/resourceType
What type of accessToken scope/resourceType do I need when using Pnp-Powershell
在 PNP 文档中显示:
https://pnp.github.io/powershell/cmdlets/Connect-PnPOnline.html#example-13
您可以使用 Oauth2 AccessToken 访问资源:
Connect-PnPOnline -Url https://contoso.sharepoint.com -AccessToken $token
当我尝试通过 Powershell 中的 Az Cli 获取访问令牌时...
https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az-account-get-access-token
$token=az account get-access-token --resource-type ms-graph --query accessToken
$token=$token.Trim('"')
Connect-PnPOnline -Url https://mysharepointdomain.com/sites/SiteINeedToAccess -AccessToken $token
Get-PnPSiteCollectionAdmin
Get-PnPSiteCollectionAdmin: The remote server returned an error: (401) Unauthorized.
当我使用带密码的 pfx 证书使用备用 Connect-PnPOnline 方法时,我可以正常访问资源。
我应该请求其他类型的访问令牌吗?
正如您提到的 "Connect-PnPOnline 使用带密码的 pfx 证书的方法" 工作正常。
请检查您是否在通过 Azure CLI 生成访问令牌时分配了必需的 权限 和 范围。
要验证范围, 使用 JSON Web Tokens - jwt.io 网站解码令牌。
如果 scp
属性不包括 SharePoint 在线权限 如:Sites.FullControl.All
、Sites.ReadWrite.All
等,那么这可能会导致401
未经授权的错误.
确保像下面那样授予 permissions:
转到 Azure 门户 -> Azure Active Directory -> 你的应用程序 -> API 权限 -> 添加权限 -> SharePoint
如需了解更多信息,请参考下面的链接:
Azure app cannot access SharePoint v1 API - 401 unauthorized access error - Microsoft Q&A
更新:
正如您在评论中提到的,请注意 Get-PnPSiteCollectionAdmin
还使用具有限制的 legacy CSOM即使授予 Sites.FullControl.All
权限也无法更改。为避免这种情况,请继续使用带密码的 pfx 证书作为 Connect-PnPOnline
方法的解决方法!
在 PNP 文档中显示: https://pnp.github.io/powershell/cmdlets/Connect-PnPOnline.html#example-13
您可以使用 Oauth2 AccessToken 访问资源:
Connect-PnPOnline -Url https://contoso.sharepoint.com -AccessToken $token
当我尝试通过 Powershell 中的 Az Cli 获取访问令牌时... https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az-account-get-access-token
$token=az account get-access-token --resource-type ms-graph --query accessToken
$token=$token.Trim('"')
Connect-PnPOnline -Url https://mysharepointdomain.com/sites/SiteINeedToAccess -AccessToken $token
Get-PnPSiteCollectionAdmin
Get-PnPSiteCollectionAdmin: The remote server returned an error: (401) Unauthorized.
当我使用带密码的 pfx 证书使用备用 Connect-PnPOnline 方法时,我可以正常访问资源。
我应该请求其他类型的访问令牌吗?
正如您提到的 "Connect-PnPOnline 使用带密码的 pfx 证书的方法" 工作正常。 请检查您是否在通过 Azure CLI 生成访问令牌时分配了必需的 权限 和 范围。
要验证范围, 使用 JSON Web Tokens - jwt.io 网站解码令牌。
如果 scp
属性不包括 SharePoint 在线权限 如:Sites.FullControl.All
、Sites.ReadWrite.All
等,那么这可能会导致401
未经授权的错误.
确保像下面那样授予 permissions:
转到 Azure 门户 -> Azure Active Directory -> 你的应用程序 -> API 权限 -> 添加权限 -> SharePoint
如需了解更多信息,请参考下面的链接:
Azure app cannot access SharePoint v1 API - 401 unauthorized access error - Microsoft Q&A
更新:
正如您在评论中提到的,请注意 Get-PnPSiteCollectionAdmin
还使用具有限制的 legacy CSOM即使授予 Sites.FullControl.All
权限也无法更改。为避免这种情况,请继续使用带密码的 pfx 证书作为 Connect-PnPOnline
方法的解决方法!