azure - 我可以/应该将 Asp.Net Identity 与组织帐户一起使用吗?

标签 azure visual-studio-2013 asp.net-mvc-5 asp.net-identity

我希望我的用户使用他们的组织帐户(AD、AAD、O365)登录我的 Web 应用程序,并使用 Asp.Net Identity 在我的应用程序中本地存储特定于应用程序的配置文件或角色信息,这些信息我不知道不想弄脏我或我的租户的目录。

我不确定这个场景是否现实,因为我发现有关它的信息很少。在 MVC 4 中这是可行的。我将创建一个空的 MVC4 Web 应用程序,使用身份和访问工具设置联合身份验证,并将名称声明存储在我使用 SimpleMembership 设置的用户表中(例如 this 。)

然而,对于新的开发来说,似乎更倾向于使用 Asp.Net Identity 而不是 SimpleMembership。但那里看起来要困难得多。查看 Visual Studio 2013 RTM 中的 ASP.NET Web 模板,我必须将个人帐户模板中的部分与组织帐户模板中的部分结合起来。我已经看到 Asp.Net 身份将外部登录信息存储在 AspNetUserLogins 表中,开箱即用(我可以先使用 EF6 代码更改),但我无法弄清楚我要存储的 ClaimsIdentity 中的哪些信息最好(tenantId 和名称声明?)或在代码中的什么位置。组织帐户模板引用了 Microsoft.Aspnet.Identity,但似乎从未调用过它。

我的方案可行吗?是否有可以在 VS2013 最终版本上构建的示例?使用自己的实现来存储角色和配置文件信息而不是 Asp.Net Identity 会更好吗?

最佳答案

这是一个有效的场景,我已经实现了与此类似的东西。假设您想要将 WAAD 用户的“元数据”存储在本地存储库中。我所说的元数据是指基本的标识信息,您可以使用这些信息将本地存储库中的用户与 WAAD 中的同一用户条目关联起来。这是我要存储的内容:

IdentityProvider(在本例中为 WAAD)
TenantId(此字段的格式可能因身份提供商而异,但字符串就足够了)
UserId(同样,该字段的格式可能因 idP 不同而有所不同,但字符串可以使用...名称声明,在本例中 - 只要它在租户内的用户之间是唯一的)

您应该能够从 ClaimsPrincipal/ClaimsIdentity 中获取此信息。我在 VS 2013 出现之前实现了我的应用程序,因此我推出了自己的应用程序,但在阅读了新的“一个”ASP.NET 身份文档后,它看起来相当可扩展,因此采用它可能是一个好主意。它甚至允许您插入不同的存储提供程序(不仅仅是关系数据库)。

关于azure - 我可以/应该将 Asp.Net Identity 与组织帐户一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534356/

相关文章:

asp.net-mvc - 如何更改 MVC 5 中的 url?

c# - 将数据从一个 Controller 操作传递到 ASP.Net MVC 5 中的另一个 Controller 操作

azure - 如何将 .net Core 应用程序发布到 Azure 应用服务以在函数中使用?

azure - 从 Azure DevOps 设置应用服务连接字符串

c# - Visual Studio 2013 中没有 MVC 5 模板

c# - StyleBundle 被渲染为 ScriptBundle

azure - Kusto 查询语言 : Get keyword that was matched (has_any)

azure - 如何使通过 Azure 应用服务托管的 React 应用程序的浏览器缓存失效?

c++ - 缺少 WinUSB 模板

c++ - LNK2001 只有一些内联函数没有解决?