我遵循https://www.christianfrohn.dk/2022/04/23/connect-to-microsoft-graph-with-powershell-using-a-certificate-and-an-azure-service-principal/连接到Microsoft Graph,但收到以下错误。
Get-MgUser -Top 1
> Get-MgUser : Insufficient privileges to complete the operation.
> At line:1 char:1
> + Get-MgUser -Top 1
> + ~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidOperation: ({ ConsistencyLe...ndProperty = }: <>f__AnonymousType62`9) [Get-MgUser
> _List1], RestException`1
> + FullyQualifiedErrorId : > Authorization_RequestDenied,Microsoft.Graph.PowerShell.Cmdlets.GetMgUser_List1
据我所知,我需要同意这些许可。我找到了很多关于如何在互动会话中做到这一点的来源,但没有人说过如何在非互动会话中做到这一点。
我尝试将-Scope添加到连接字符串,但收到以下错误
Connect-MgGraph -ClientID [snip] -TenantId [snip] -CertificateThumbprint [snip] -Scopes 'User.Read.All'
> Connect-MgGraph : Parameter set cannot be resolved using the specified named parameters.
> At line:1 char:1
> + Connect-MgGraph -ClientID 19cb80c5-b355-42bc-a892-e73d11f57ef4 -Tenan ...
> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidArgument: (:) [Connect-MgGraph], ParameterBindingException
> + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.Graph.PowerShell.Authentication.Cmdlets.ConnectMgGraph
我该怎么做呢?
编辑
这就是我连接的方式
Connect-MgGraph -ClientId $clientId -TenantId $tenantId -CertificateThumbprint $thumbPrint
Welcome To Microsoft Graph!
API权限
谢谢
2条答案
按热度按时间rqqzpn5f1#
您的应用程序注册具有错误的权限。有两种类型的权限,
delegated
(又名作用域)和application
(又名角色)。参考:权限类型
对于“交互式”会话,您的应用程序将代表用户进行交互,因此使用
delegated
权限。对于“非交互”会话,您的应用程序将充当其自身,因此它需要
application
类型的权限。作为应用程序进行连接时(“非交互”),也不要指定
-Scopes
参数h5qlskok2#
要确定运行microsoft.graph模块的特定cmdlet所需的权限,可以使用
find-mgGraphCommand
cmdlet,例如:要确定将哪些权限分配给当前会话,可以使用
get-mgcontext
cmdlet,例如:如果运行交互式会话,则必须指定作用域,例如:
要使用证书在服务主体的上下文中连接,您可以执行以下操作:
顺便说一句。客户端ID=服务主体的对象ID