gpt4 book ai didi

azure-active-directory - Microsoft Identity Web - 如何获取用户登录事件?

转载 作者:行者123 更新时间:2023-12-04 17:26:37 26 4
gpt4 key购买 nike

我正在使用 Microsoft.Identity.Web NuGet 包,以便使用 Azure AD 将用户登录到 Net Core 3.1 WebApp,然后一旦用户登录,我就使用他们的 token 和范围来调用 MS Graph API从他们的个人资料中获取一些额外的数据,例如他们的名字、姓氏、用户名等。基本上,关于用户的一些额外信息不会自动包含在从 Azure AD 返回的 token 中。

这部分工作正常。

我想要实现的是配置某种形式的系统事件或触发器来告诉我用户何时成功登录,然后我将使用此触发器运行图形 API 查询并获取用户的其他配置文件属性。我想要这样做的原因是每次用户请求新页面并运行方法或操作时,我都可以将他们的附加属性包含到日志记录中。

因为 Microsoft.Identity.Web 包将帐户 Controller 隐藏在 NuGet 包中的某处(假设是一个 dll 或其他东西)我似乎无法访问它以查看我可以通过事件的方式锁定什么我可以用于上述操作的触发器。

除非我在用户登录后调用 MS Graph,否则我将无法访问我想包含在 Serilog 日志记录结构中的某些用户配置文件属性。

一旦我从 MS Graph 获得了所需的用户属性,那么我认为最好的解决方案是在登录 session 的生命周期内将它们作为 getters setters 存储在内存中,这样我就可以从任何页面模型访问它们/通过 DI 或模型在应用程序中使用 Controller 。

我曾想过在成功登录后加载主页索引页面时,只是简单地从 OnGet() 方法调用 MS Graph,但挑战是用户可能不一定先访问主页才能登录,他们可能已将书签保存到他们想立即转到的另一个页面,这意味着主页中的 OnGet() 方法可能永远不会运行。我需要一个更可靠的解决方案,因为我应该确保每次都正确地获取这些额外的用户配置文件属性,而不管首先访问哪个页面提示用户登录过程。

注意:我观察到这样一个事实,如果我直接进入一个启用了授权的页面,一旦登录,OIDC 就会返回到同一页面。

这个谜题的最后一步是在用户注销后从内存中删除保存的用户配置文件属性,但这应该很容易,因为注销 session 总是让我返回到 https://localhost:5001/MicrosoftIdentity/帐户/退出

如果有人对我可以使用此库实现上述目标有任何想法,那就太好了,谢谢

最佳答案

我在 Microsoft Identity Web 中找到了自定义代码的内容:

AddSignIn has another override, which takes delegates instead of aconfiguration section. The override with a configuration sectionactually calls the override with delegates. In advanced scenarios youmight want to add configuration by code, or if you want to subscribeto OpenIdConnect events. For instance if you want to provide a customprocessing when the token is validated.

https://github.com/AzureAD/microsoft-identity-web/wiki/web-apps#using-delegate-events

以下是 ASP.net 核心的 Microsoft 代码示例,适用于许多情况:
https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/

关于azure-active-directory - Microsoft Identity Web - 如何获取用户登录事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62821850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com