Entra 外部 ID AttributeCollectionSubmit 不包含 ObjectId

问题描述 投票:0回答:1

我在 Entra 外部 ID 中注册了一个自定义身份验证扩展,它将在用户注册期间使用 AttributeCollectionSubmit 事件类型调用我的 API。我想在这次通话期间在我的外部数据库中注册该用户。但是,用户 ObjectId 不会与声明一起传递给 API 控制器。我可以很好地收到他们在注册过程中添加的其他声明,例如“显示名称”和“电子邮件”。

我相信原因是用户的ObjectId不是在该事件触发之前由Azure创建的,而是在触发之后。这给我留下了如何将 Azure 中创建的用户关联到我的数据库的问题。

我查看了其他事件类型。 Entra Id 好像只有两个选项

OnAttributeCollectionStart
OnAttributeCollectionStart 事件发生在属性收集步骤开始时、属性收集页面呈现之前。您可以添加预填充值和显示阻止错误等操作。

OnAttributeCollectionSubmit
OnAttributeCollectionSubmit 事件在用户输入并提交属性后发生。您可以添加操作,例如验证或修改用户的条目。

两者似乎都不适合我的用例,因为 Azure 尚未创建用户 ObjectID。

所以我的问题是如何在注册用户流程期间向外部数据库注册 Entra ID 用户?

azure-entra-id entra microsoft-entra-external-id
1个回答
0
投票

说到 OnAttributeCollectionSubmit 事件,请注意,它发生在用户输入并提交属性之后,可用于在租户中创建实际用户帐户之前验证用户提供的信息。这就是为什么您没有收到 ObjectID,因为此时尚未生成它。

将来应该支持更多事件,例如AfterUserRegistered。您可以使用的不仅仅是自定义声明提供者。在注册过程中,用户会自动进行身份验证,因此会调用此事件。然后在 API 端,您可以检查数据库中是否存在该用户。这不是完美的解决方案,因为每次用户进行身份验证时您都会 ping 您的 API,但不幸的是,这是我目前可以提供的唯一解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.