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

asp.net azure active directory user profile data

我正在使用 Azure 的 AD 身份验证开发 MVC 应用程序。我一直在寻找 'extend' 用户配置文件数据的最佳实践或建议方法。例如,我希望用户存储自己的出生日期。

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

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

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

提前致谢!

我有几个选项可以在这里提出建议。

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

选项 2 - 使用目录架构扩展。 Azure AD(通过 Graph API)允许您的应用程序声明其他属性以扩展客户的 Azure AD 架构。在这里,您可以使用新的出生日期 属性 扩展用户实体。您的(多租户应用程序)的客户(管理员)需要同意允许您的应用程序写入他们的目录,如果同意,该目录将使用您的应用程序声明的扩展属性扩展他们的用户实体模式。然后您的应用程序(或实际上任何应用程序)都可以读取和写入这个新扩展 属性。注意:目前对这些扩展属性没有特殊的访问控制 - 如果用户或应用程序有权读取用户实体(在这种情况下),他们将能够读取任何应用程序声明的任何扩展属性 - 包括你的。
有关目录扩展的更多信息,请参阅 https://msdn.microsoft.com/en-us/library/azure/dn720459.aspx and http://blogs.msdn.com/b/aadgraphteam/archive/2014/03/06/extend-azure-active-directory-schema-using-graph-api-preview.aspx (despite what this blog post says, schema extensions is now GA in version 1.5 of the Graph API). Directory schema extensions are also supported through the Graph Client Library, and you can see this in the console sample here on github: https://github.com/AzureADSamples/ConsoleApp-GraphAPI-DotNet.

HTH,