【问题标题】:Configurable token lifetimes in Azure Active DirectoryAzure Active Directory 中的可配置令牌生命周期
【发布时间】:2023-04-04 09:50:01
【问题描述】:

我无法从 PowerShell 分配 TokenLifetimePolicy Azure AD 应用程序策略。我有一个错误BadRequestMessage: Open navigation properties are not supported on OpenTypes.Property name: 'policies

我正在尝试从Configurable token lifetimes in Azure Active Directory 实现令牌到期时间

请参阅下面的屏幕截图,欢迎使用 AzureAD cmdlet Add-AzureADApplicationPolicy 上的任何有用链接和解决方案

【问题讨论】:

  • 如果文本可读性更好并且可能节省空间,为什么还要截屏?此外命令被切断。因为它是你的命令可能不正确。
  • 我会仔细检查您在命令中使用的对象 ID 是否正确。对于应用程序,请转到 Azure Portal,对于策略,您可以使用 Get-AzureADPolicy
  • @Seth 你们的 cmets 是如何回答这个问题的。以为我们只在这里发布问题或答案。一张图值一千字,命令只接受两个参数,IdRefObjectId,这两个参数都被传递了
  • 评论不是为了回答问题,而是为了寻求更多信息和澄清。此外,我们正在处理代码。如果您的屏幕截图会显示 UI 故障或类似问题,我会理解您会发布它。但是您的问题是关于代码的,此外它不完整。当然,在这种情况下可能没问题,但通常将代码包含在文本中和整体上是一个好主意。你的回答也表明了这一点。如果断了有什么用?

标签: powershell azure azure-active-directory azure-ad-b2c azure-ad-graph-api


【解决方案1】:

我只使用New-AzureADPolicy cmdlet 并设置-IsOrganizationDefault $true 而不是$false 使其工作。效果需要一段时间才能看到。所以等待大约 30 分钟到一个小时(我不知道确切的时间)。之后,您的新策略将被创建和应用。另请记住,这是 PowerShell,因此 cmdlet 中没有空格。

例子:

New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"02:00:00","MaxInactiveTime":"02:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "PolicyScenario" -IsOrganizationDefault $true -Type "TokenLifetimePolicy"

多行版本:

New-AzureADPolicy -Definition @(
    '
        {
            "TokenLifetimePolicy":
                {
                    "Version": 1,
                    "AccessTokenLifetime": "02:00:00",
                    "MaxInactiveTime": "02:00:00",
                    "MaxAgeSessionSingleFactor": "02:00:00"
                }
        }
    '
    ) -DisplayName "PolicyScenario" -IsOrganizationDefault $true -Type "TokenLifetimePolicy"

Microsoft 可能会使用 IsOrganizationDefault $true 解决此问题。在问题中阅读更多信息:Azure AD Configurable Token Lifetimes not being Applied

【讨论】:

    【解决方案2】:

    我为我的客户做了很多测试。由于不在最新版本的 PowerShell 上,我时不时会遇到这样的问题。

    get-module
    

    AzureADPreview (V2) 目前最新版本 2.0.0.114 Instructions to download here

    正如 Seth 所指出的,-IsOrganizationDefault $true 存在问题。

    我发现的另一个问题是您的系统上有多个版本的 PowerShell,并且它加载了没有更新位的错误版本。我上周五遇到了这个问题——我必须擦掉所有东西并重新安装——然后它就修好了。

    还有——

    两者之间有区别:

    Add-AzureADApplicationPolicy
    

    Add-AzureADServicePrincipalPolicy
    

    一个用于应用程序对象,另一个用于 ServicePrincipal。如果您将其应用于基于 SAML 的应用程序,那么您应该将其应用于 ServicePrincpal。

    注意:应用程序对象和 servicePrincipal 对象有不同的 ObjectID。不要把这些搞混了。对于实验,针对您的应用程序运行两个 cmd:

    Get-AzureADServicePrincipal -SearchString <name of app>
    Get-AzureADApplication -SearchString <name of app>
    

    如果您获取了错误的 ObjectID - 当您去应用该策略时就不行了

    这些策略的顺序是:ServicePrincipal -> Application -> Tenant(组织)

    【讨论】:

      【解决方案3】:

      应用程序是在 B2C 门户中创建的吗?

      假设答案是肯定的,这种行为是预期的: Microsoft 有 2 个授权端点,V1 和 V2。

      B2C 门户创建 V2 应用程序。 powershell 中的令牌生命周期设置可能仅适用于 V1 应用程序。

      b2c 刀片上有设置可以更改此设置。

      另一种选择是从 azure Active Directory 刀片(与 b2c 刀片相反)创建应用程序。然后您可以使用 powershell 设置令牌的生命周期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-01
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 2016-05-03
        相关资源
        最近更新 更多