【问题标题】:ADAL 3.13 - Graph APIADAL 3.13 - 图形 API
【发布时间】:2016-12-05 04:19:16
【问题描述】:

我的问题是 ADAL for GRAPH API 中的“范围或权限”。

我正在使用 ADAL 3.13,并创建了以下脚本:

$adal = "C:\Users\filippog\Desktop\ADAL\_Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$adalforms = "C:\Users\filippog\Desktop\ADAL\_Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
[System.Reflection.Assembly]::LoadFrom($adal)
[System.Reflection.Assembly]::LoadFrom($adalforms)

[string] $adTenant = "****"
[string] $clientId = "1950a258-227b-4e31-a9cf-717495945fc2" #id client of powershell
[string] $resourceAppIdURI = "https://graph.windows.net/"
[string] $authority = "https://login.microsoftonline.com/$adTenant"
[uri] $redirectUri = "urn:ietf:wg:oauth:2.0:oob" #redirect urPowerShell - i of powershell
[string] $resourceURI = 'https://graph.microsoft.com/'
[string] $scope = "scope=mail.read"

$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority #,$false

$PromptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
$platformParam = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters" -ArgumentList $PromptBehavior
$userId = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier" -ArgumentList "****", "OptionalDisplayableId"

$authResult = $authContext.AcquireTokenAsync($resourceUri, $clientId, $redirectUri, $platformParam, $userId, $scope)
$AuthHeader=$authResult.result.CreateAuthorizationHeader()

$headers = @{
  "Authorization" = $AuthHeader
  "Content-Type"  = "application/json"
}

Invoke-RestMethod -Headers $headers -Uri https://graph.microsoft.com/v1.0/me/messages -Method Get

我的问题是,当我执行脚本并调用图形时(例如,graph/v1.0/me 它可以工作,但是当我调用 graph/v1.0/me/messages 时,脚本返回 error 403

【问题讨论】:

  • 您真的不应该使用不属于您自己的应用程序的客户端 ID。注册自己的本地客户端应用程序非常容易,而且您将获得额外的优势(例如,您可以在登录提示中控制命名和品牌)。
  • PowerShell 客户端 ID 没有邮件消息的范围。

标签: api powershell adal microsoft-graph-api


【解决方案1】:

根据 Philippe 的评论,请注册您自己的应用程序。 据我所知,您尝试对 powershell 客户端的 ID 执行的操作不会起作用,ADAL 3.13 的增量/动态同意也不会。 MSAL(一个新的身份验证客户端库)确实支持增量同意,您可以尝试这样做,但 MSAL 处于预览状态(您需要在 apps.dev.microsoft.com 上注册您的应用程序)。或者,如果您想继续使用 ADAL,您可以使用 Azure 门户在 portal.azure.com 上注册您的应用程序,方法是搜索应用程序注册刀片,您将要在其中注册本机客户端应用程序,并请求权限Microsoft Graph 中的用户、邮件和您需要的任何其他内容。

顺便说一句 - 出于兴趣,你想在这里做什么?您是否尝试为 Outlook 和 Microsoft Graph 创建 PowerShell 客户端?如果我们提供 Microsoft Graph PowerShell 客户端,您会对此感兴趣吗?如果是这样,请通过UserVoice 提出请求。

希望这会有所帮助,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2020-05-06
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多