我希望我的用户使用他们的组织帐户(AD,AAD,O365)登录我的网络应用程序,并使用Asp.Net Identity在我的应用程序中本地存储应用程序特定的配置文件或角色信息。我想用我的目录或我的租户的目录。
我不确定这种情况是否真实,因为我发现它的信息很少。在MVC 4中它是可行的。我将创建一个Empty MVC4 Web应用程序,使用Identity and Access工具设置联合身份验证,并将名称声明存储在我使用SimpleMembership设置的Users表中(如this。)
似乎更有利于Asp.Net Identity而不是SimpleMembership进行新开发。但它看起来要困难得多。查看Visual Studio 2013 RTM中的ASP.NET Web模板,我必须将Individual Accounts模板中的位与组织帐户模板的位组合在一起。我已经看到Asp.Net身份在开箱即用的AspNetUserLogins表中存储外部登录信息(我可以先用EF6代码更改)但我无法弄清楚我的ClaimsIdentity中存储了哪些信息最好的(tenantId和名称声明?)或代码中的哪一点。组织帐户模板引用了Microsoft.Aspnet.Identity,但似乎永远不会调用它。
我的情景可行吗? VS2013最终版本是否有可以构建的样本?使用自己的实现存储角色和配置文件信息而不是Asp.Net Identity会更好吗?
答案 0 :(得分:0)
这是一个有效的场景,我已经实现了类似的东西。假设您想在本地存储库中存储WAAD用户的“元数据”。通过元数据,我的意思是您可以使用基本标识信息将本地存储库中的用户绑定到WAAD中的同一用户条目。这就是我要存储的内容:
IdentityProvider (在这种情况下为WAAD)
TenantId (此字段的格式可能因身份提供商而异,但字符串应该足够了)
UserId (再次,此字段的格式可能因idP而异,但字符串可以正常工作...在此实例中名称声明 - 只要它在租户内的用户中是唯一的)
这是您应该能够从ClaimsPrincipal / ClaimsIdentity中获取的信息。我在VS 2013出现之前实现了我的应用程序,所以我自己编写了但是通过阅读新的“一个”ASP.NET身份文档,它看起来相当可扩展,并且可能是一个好主意。它甚至允许您插入不同的存储提供程序(而不仅仅是关系数据库)。