gpt4 book ai didi

c# - ASP.NET Identity自动注册Claims用户

转载 作者:行者123 更新时间:2023-11-30 16:58:54 27 4
gpt4 key购买 nike

我们正在尝试构建一个 Intranet Web 应用程序,并且希望用户能够仅使用其域凭据登录我们的网站并自动注册。我在 Identity 中看到的所有示例代码都显示用户通过 AccountController 上的注册页面,并且 UserManager 用于在此处创建用户。

由于我们要求在所有页面上进行身份验证,因此用户当前只是重定向到域登录(我们当前使用的是 Azure 事件域),然后返回到我们的页面。看起来 Identity 的默认行为是在发生这种情况时不在应用程序数据库中创建 User,因此我们最终会得到一个经过身份验证的 Identity,而数据库中没有相应的 User 对象。有没有一个好的地方可以创建这个用户?创建用户的最佳方式是什么? UserLogin 表如何发挥作用,我假设它以某种方式用于将 ClaimsPrincipal 与应用程序数据库 User 相匹配?

我们正在使用 MVC 5、Entity Framework 6 和 WIF 2

最佳答案

当您使用 Azure Active Directory(组织帐户)时,Active Directory 就是您的用户数据库。除非您专门添加它,否则不会出现像您使用个人帐户配置应用程序进行身份验证时所获得的 AspNetUserLogins 表。

我假设您想要创建某种用户表,以便可以存储每个用户的用户配置文件数据和/或一些授权声明。你仍然可以这样做。例如,您可以在 SQL 数据库(或您想要的任何数据库)中创建一个表来存储用户配置文件记录。代码中针对此类事情的一个很好的扩展点是从 ClaimsAuthenticationManager 派生一个类。并重写 Authenticate 方法。在这里,您可以检查传入的经过身份验证的用户的声明,查找您在数据库表中为该用户存储的其他配置文件声明,然后将这些声明添加到 ClaimsPrincipal 的声明集中。您将从传入主体对象中的 Azure AD 获得的声明之一是对象标识符。这对于您的用户配置文件表来说是一个很好的键,以便您可以在后续登录时正确识别用户。

enter image description here我刚刚描述的用户配置文件表方法的替代方法,您可能想要研究的是 extend the Azure AD schema 的能力使用图形 API。我个人还没有尝试过这种技术。它也仍处于预览状态。但是,总体思路是您可以为您的 Intranet 应用程序注册一个扩展,其中包括每个用户的附加属性。

关于c# - ASP.NET Identity自动注册Claims用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533620/

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