使用图形创建服务主体后,如何知道何时可以使用 ARM 进行角色定义?

After Service Principal creation with graph, how to know when will it be available for role definition with ARM?

我目前正在按照此脚本直接 API 调用 graph 和 ARM 以编程方式创建 Active Directory 应用程序、引用创建应用程序的服务主体以及对创建服务的角色分配主要的。

效果很好,因为我必须只使用 JavaScript:https://github.com/Azure/azure-sdk-for-node/blob/master/Documentation/ServicePrincipal/spCreate.js

问题在于,在第 134 行尝试在服务主体创建的成功回调中分配角色会导致 400 错误,指出未找到服务主体。尝试在成功回调中立即发出请求时会出现此问题,如果我在服务主体创建成功回调后等待大约 20 秒,则角色分配有效。

所以我的问题是,在不需要设置 sleep/setTimeOut 等待更改在 Azure 中传播的情况下,处理角色分配的最佳方法是什么?是否有其他 webhook/event 或表示服务主体可用的信号?

这种情况没有 webhook/event。作为解决方法,您可以检查角色分配的结果,如果失败,您可以重复发送请求。

此外,如果您对 Azure Active Directory 有任何想法或反馈,可以从 here 提交。