1

我正在使用Azure的AD身份验证的MVC应用程序。我一直在寻找最佳做法或建议的方式来“扩展”用户配置文件数据。例如,我希望用户有自己的存储日期。asp.net天青活动目录用户配置文件数据

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

我找不到别的有点接近的解决办法,所有其他的解决方案是另一种类型的身份验证。

有一点需要注意的是,应用程序只具有对AD的读取访问权限,如果这对于我的要求至关重要。我希望只是创建一个使用User.Identity.GetUserId()的用户模型(这是每一个将改变?如果它,我可以用什么不会?)。

在此先感谢!

回答

3

我有几个选项在这里建议。

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

选项2 - 使用目录模式扩展。 Azure AD(通过Graph API)允许您的应用程序声明其他属性以扩展客户的Azure AD模式。在这里,您可以使用新的dateOfBirth属性扩展用户实体。 (多租户应用程序)的客户(管理员)需要同意允许您的应用程序写入他们的目录,经过同意后,他们可以使用您的应用程序声明的扩展属性扩展其用户实体架构。然后,您的应用程序(或者其他任何应用程序)可以读取和写入这个新的扩展属性。注意:目前这些扩展属性没有特殊的访问控制 - 如果用户或应用程序有权读取用户实体(在这种情况下),他们将能够读取任何应用程序(包括您的应用程序)声明的任何扩展属性。
有关目录扩展名的更多信息,请参阅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(尽管此博客文章中提到,架构扩展现在是Graph API 1.5版中的GA)。目录架构扩展也可以通过Graph Client Library得到支持,您可以在github上的控制台示例中看到这一点:https://github.com/AzureADSamples/ConsoleApp-GraphAPI-DotNet

HTHs,