配置令牌生存期策略(预览版)

在以下步骤中,你将实现一个常见策略方案,用于为令牌生存期施加新规则。 可以指定由 Microsoft 标识平台颁发的访问、SAML 或 ID 令牌的生存期。 可以为组织中的所有应用程序,或者特定应用程序或主体进行设置。 也可以针对多组织(多租户应用程序)进行设置。 你需要增加令牌的生存期,以便脚本可以运行一个多小时。 许多 Microsoft 库(例如 Microsoft Graph PowerShell SDK)会根据需要延长令牌生存期,因此你无需更改访问令牌策略。 有关详细信息,请参阅可配置的令牌生存期

先决条件

若要开始,请下载最新的 Microsoft Graph PowerShell SDK

创建策略并将其分配给应用

在以下步骤中,你将创建一个要求用户以更低的频率在 Web 应用中进行身份验证的策略。 将策略分配给应用程序,这会将 Web 应用程序的访问/ID 令牌的生命周期设置为 4 小时。

Install-Module Microsoft.Graph

Connect-MgGraph -Scopes  "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"

# 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

# Assign the token lifetime policy to an app
$params = @{
  "@odata.id" = "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/$tokenLifetimePolicyId"
}

$applicationObjectId="aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"

New-MgApplicationTokenLifetimePolicyByRef -ApplicationId $applicationObjectId -BodyParameter $params

# List the token lifetime policy on the app
Get-MgApplicationTokenLifetimePolicy -ApplicationId $applicationObjectId

# Remove the policy from the app
Remove-MgApplicationTokenLifetimePolicyByRef -ApplicationId $applicationObjectId -TokenLifetimePolicyId $tokenLifetimePolicyId

# Delete the policy
Remove-MgPolicyTokenLifetimePolicy -TokenLifetimePolicyId $tokenLifetimePolicyId

创建策略并将其分配给服务主体

在以下步骤中,你将创建一个要求用户以更低的频率在 Web 应用中进行身份验证的策略。 将策略分配给服务主体,这会将 Web 应用程序的访问/ID 令牌的生命周期设置为 8 小时。

  1. 创建令牌生存期策略。

    POST https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies
    Content-Type: application/json
    {
        "definition": [
            "{\"TokenLifetimePolicy\":{\"Version\":1,\"AccessTokenLifetime\":\"8:00:00\"}}"
        ],
        "displayName": "Contoso token lifetime policy",
        "isOrganizationDefault": false
    }
    
  2. 将策略分配到服务主体。

    POST https://graph.microsoft.com/v1.0/servicePrincipals/00001111-aaaa-2222-bbbb-3333cccc4444/tokenLifetimePolicies/$ref
    Content-Type: application/json
    {
      "@odata.id":"https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
    }
    
  3. 列出服务主体的策略。

    GET https://graph.microsoft.com/v1.0/servicePrincipals/00001111-aaaa-2222-bbbb-3333cccc4444/tokenLifetimePolicies
    
  4. 从服务主体中移除策略。

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/00001111-aaaa-2222-bbbb-3333cccc4444/tokenLifetimePolicies/00aa00aa-bb11-cc22-dd33-44ee44ee44ee/$ref
    

查看租户中现有的策略

若要查看组织中创建的所有策略,请运行 Get-MgPolicyTokenLifetimePolicy cmdlet。 任何已定义的属性值不同于上面列出的默认值的结果都在停用范围内。

  1. 运行 Get-MgPolicyTokenLifetimePolicy 以查看组织中创建的所有策略。

    Get-MgPolicyTokenLifetimePolicy
    
  2. 若要查看都有哪些应用与你确定的具体策略相关联,请使用任何策略 ID 运行 List appliesTo

    GET https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/4d2f137b-e8a9-46da-a5c3-cc85b2b840a4/appliesTo
    

下一步