9

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

我不确定这种情况是否现实,因为我找到的信息很少。在 MVC 4 中它是可行的。我将创建一个 Empty MVC4 Web 应用程序,使用 Identity and Access 工具设置联合身份验证,并将名称声明存储在我使用 SimpleMembership 设置的用户表中(像这样。)

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

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

4

1 回答 1

0

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

IdentityProvider(WAAD,在这种情况下)
TenantId(此字段的格式可能因身份提供者而异,但字符串就足够了)
UserId(同样,此字段的格式可能因 idP 而异,但字符串可以工作...名称声明,在这种情况下 - 只要它在租户内的用户之间是唯一的)

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

于 2013-12-17T14:53:51.997 回答