asp.net azure活动目录用户配置文件数据

时间:2015-02-24 08:03:01

标签: c# sql-server asp.net-mvc asp.net-identity azure-active-directory

我正在使用Azure的AD身份验证处理MVC应用程序。我一直在寻找最佳实践或建议的方式来“扩展”用户个人资料数据。例如,我希望用户将自己的出生日期存储起来。

我看过这个,但它并没有真正回答我的问题:Active Directory User Data Storage

我找不到任何其他类似的解决方案,所有其他解决方案都适用于其他类型的身份验证。

有一点需要注意的是,应用程序只对AD有读取权限,如果这对我要求的内容很重要。我希望只创建一个使用User.Identity.GetUserId()的用户模型(这是否会改变?如果有,我可以使用哪些不会?)。

提前致谢!

1 个答案:

答案 0 :(得分:4)

我在这里有几个建议。

选项1 - 您可以使用自己的应用程序配置文件存储,用于存储目录中不存在的属性的其他用户配置文件信息。基本上,当您的应用获得已登录用户的用户令牌(或JWT令牌)时,您将在令牌中获得objectId(oid)声明。这是用户的唯一ID(跨所有Azure AD)。您可以将其用作用户配置文件存储中的密钥,并使用此密钥将AAD中的用户信息实际链接到应用商店中的用户信息。

选项2 - 使用目录架构扩展。 Azure AD(通过Graph API)允许您的应用程序声明其他属性以扩展客户的Azure AD架构。在这里,您可以使用新的dateOfBirth属性扩展User实体。您(多租户应用)的客户(管理员)需要同意允许您的应用写入其目录,经过同意,将使用您的应用声明的扩展属性扩展其用户实体架构。您的应用程序(或实际上任何应用程序)可以读取和写入此新扩展属性。注意:目前这些扩展属性没有特殊的访问控制 - 如果用户或应用程序有权读取用户实体(在本例中),他们将能够读取任何应用程序(包括您的应用程序)声明的任何扩展属性。
有关目录扩展的详细信息,请参阅https://msdn.microsoft.com/en-us/library/azure/dn720459.aspxhttp://blogs.msdn.com/b/aadgraphteam/archive/2014/03/06/extend-azure-active-directory-schema-using-graph-api-preview.aspx(尽管此博客文章中说过,架构扩展现在是图谱API 1.5版中的GA)。通过Graph Client Library也支持目录架构扩展,您可以在github上的控制台示例中看到这一点:https://github.com/AzureADSamples/ConsoleApp-GraphAPI-DotNet

HTHS,