我正在尝试按照 MsDocs 来延长访问令牌的生命周期。
为此我已经在ubuntu中安装了powershell。
我已安装 Microsoft Graph PowerShell SDK。 并遵循命令。
但是根据命令:
Connect-MgGraph
-Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"
我打开 Microsoft 页面,登录页面后显示错误:
身份验证失败。您可以返回到应用程序。请随意关闭此浏览器选项卡。
错误详细信息:错误 invalid_scope error_description:为输入参数“范围”提供的值无效。范围“Policy.ReadWrite.ApplicationConfiguration Policy.Read.All Application.ReadWrite.All openid 配置文件offline_access”不存在。
终端也显示类似的错误:
Connect-MgGraph: InteractiveBrowserCredential authentication failed: The provided value for the
input parameter 'scope' is not valid. The scope 'Policy.ReadWrite.ApplicationConfiguration
Policy.Read.All Application.ReadWrite.All openid profile offline_access' does not exist.
我从 MsDocs 复制命令仍然显示此错误。
我正在将 Outlook 集成到我的应用程序中。我已经在天蓝色上创建了应用程序,我正在尝试为此更改令牌生命周期。我正在尝试使用用于在 azure 上创建应用程序的同一帐户登录。
最初,我在 Ubuntu 20.04.6 中安装了 PowerShell 7.4.1 版本:
$PSVersionTable
当我在连接到 Microsoft Graph 时尝试使用个人 Microsoft (Outlook) 帐户登录时,我也遇到了 同样的错误:
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"
回复:
如本 MS Doc 中所述,不支持使用个人 Microsoft (Outlook) 帐户创建令牌生命周期策略。。
要解决该错误,您需要使用本地租户用户帐户登录,并具有以
.onmicrosoft.com
结尾的 admin 访问权限:
接受权限的
同意后,我成功连接到 Microsoft Graph,响应如下:
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"
或者,您还可以通过传递不涉及任何用户交互的客户端 ID 和客户端密钥,作为
服务主体连接到 Microsoft Graph。 我注册了一个应用程序,并通过像这样授予同意来授予
Application类型的 API 权限:
要通过 PowerShell 将 Microsoft Graph 连接为
服务主体,您可以使用以下示例脚本:
$appId= "appId"
$secret = "client_secret"
$tenantID = "tenantId"
$securedSecret = ConvertTo-SecureString -String $secret -AsPlainText -Force
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $appId, $securedSecret
Connect-MgGraph -TenantId $tenantID -ClientSecretCredential $ClientSecretCredential
现在,您可以运行剩余的脚本来创建令牌生命周期策略,如下所示:
# Create a token lifetime policy
$params = @{
Definition = @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"4:00:00"}}')
DisplayName = "WebPolicyScenario"
IsOrganizationDefault = $false
}
$tokenLifetimePolicyId=(New-MgPolicyTokenLifetimePolicy -BodyParameter $params).Id
# Display the policy
Get-MgPolicyTokenLifetimePolicy -TokenLifetimePolicyId $tokenLifetimePolicyId