我们正在尝试获取 ADB2C 应用程序的某些用户的最后登录时间。我们已经设置了 Microsoft Graph API 查询,并且正在工作 - 当我们请求
https://graph.microsoft.com/v1.0/users?$select=signInActivity,displayName,mail,id,userPrincipalName,identities
时,signInActivity 已填写。
问题在于,新登录后,signInActivity 需要很长时间才能更新。测试用户昨天(大约 20 小时前)登录,但他们的 signInActivity.lastSignInDateTime 尚未更新。我们每小时发送一次 API 请求进行检查。
有没有办法强制lastSignInDateTime重新检查azure登录日志并更新?
signInActivity
来自租户的不同部分,而不是直接来自用户对象。
我的假设这不会实时更新或在夜间批量运行以保存处理。我没有任何文档来适应这个假设,但它确实与我之前经历过的事情相符。
如果您需要更多最新数据,最好的方法是通过扩展属性将登录日期/时间保存到用户对象。
内置用户旅程不支持此功能,因为每次登录时触发的唯一 API 连接器是 发送令牌之前 API 连接器 - 不过,您可以使用此连接器调用 API 来更新通过 Microsoft Graph 的用户对象...请注意,这样做会为用户的登录体验添加更多故障点。
如果您可以迁移到 B2C 自定义策略,则需要添加 自定义属性 并在登录期间更新此属性。 Azure 示例 - 禁用非活动帐户 中实现了类似的功能。您可以看到
extension_lastLogonTime
在每次登录时如何实现和更新。
请注意,即使通过更新 Microsoft Graph 或自定义策略中的用户对象,当数据在数据中心进行复制时,由于最终一致性,仍然可能存在最多 5 分钟的延迟。
只要所提供的信息对您有帮助,请不要忘记“接受答案”和“投票”,这对其他社区成员也有好处。