等待 Active Directory 身份验证 URL 列表在 Powershell Azure 函数中更新

Wait for Active Directory Authentication URL list to update within a Powershell Azure Function

我需要确保 回复 url 添加v2 Active Directory 应用程序,然后再返回 HTTP 响应Powershell 无服务器函数.

目前,我已经使用服务主体成功连接到 Azure,获取活动目录应用程序并使用新回复更新身份验证列表 url。

这很好用,但完成这项工作似乎需要一些传播期。一切都按照 Powershell 无服务器函数中所述发生 & returns 完成后 200 HTTP 状态。

收到响应 (HTTP 200 OK) 后,我将使用 Active Directory Authentication Library (ADAL) 使用整页重定向从某些 JS 应用程序登录。

这就是问题所在,一旦 Powershell 运行并且 returns 客户端应用程序尝试使用 ADAL 登录,但 Active Directory 提示错误,提供的 url 不是一个目前在身份验证列表中。

我调查了 Start-ThreadJob & Wait-Job 但不确定 我使用的第一个 还是 第二个是最好的方法.

示例代码:


$appId = <ACTIVE_DIRECTORY_APP_ID>
$url = <NEW REPLY URL>

$password = ConvertTo-SecureString -String $env:SERVICE_PRINCIPAL_SECRET -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($env:SERVICE_PRINCIPAL_ID, $password)
Connect-AzAccount -ServicePrincipal -Credential $credential -Tenant $env:TENANT_ID

$app = Get-AzADApplication -ApplicationId $appId
$replyUrlList = $app.ReplyUrls

$replyUrlList.Add($url)

Update-AzADApplication -ApplicationId $appId -ReplyUrl $replyUrlList

$status = [HttpStatusCode]::Created
$body = "URL Added Successfully"

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = $status
        Body       = $body
    })

目前 AD 身份验证列表的更新时间为 1 分钟 - 在某些情况下为 5 分钟。取决于函数是否从冷启动启动。

只是在此处寻找最佳方法,以确保在尝试使用 ADAL 库进行身份验证之前 100% 添加新回调 url。

任何帮助都会很棒!

这不是一个有解决方案的答案。但我想我正在读一些我曾多次经历过的东西。

我一直在使用 python 和 Hashicorp 保险库来尝试管理 tokens/RBAC 应用程序。但它经常会中断,因为它还没有更新,因为从 AAD 到后端的传播与我被告知的是异步的。

我什至检查了我在哪里使用 ADAL 循环遍历应用程序以验证它是否良好。但即便如此,它在某些情况下仍然会失败。这损害了我试图实施的自动化。

现在您遇到了一些看起来类似的问题,但在将回复 url 添加到现有应用程序时却遇到了类似的问题。 我的测试问题是;在创建应用程序时提供回复 URL 是否有效?如果是这样,并且测试是 100%,那么您遇到了同样的问题。

对我来说,在应用程序上预先创建所有必要的属性帮助我避免了这个烦人的问题。因为我认为在任何地方添加睡眠都不是前进的好方法,而且 API 的回复不够可靠,无法继续进行。 如果预创建不是一个选项,我想睡眠定时器可能是一种进步。对我来说,在某些情况下最终会达到 2-5 米。在一些幸运的情况下 7-30s