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

Tom*_*Tom 3 c# sql-server asp.net-mvc asp.net-identity azure-active-directory

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

我看过这个,但它并没有真正回答我的问题:Active Directory 用户数据存储

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

需要注意的一件事是应用程序只有对 AD 的读取访问权限,如果这对我的要求很重要。我希望只创建一个使用 User.Identity.GetUserId() 的 User 模型(这是否会改变?如果改变了,我可以使用什么不会?)。

提前致谢!

Dan*_*SFT 5

我在这里有几个建议。

选项 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(尽管这篇博文说了什么,架构扩展现在是 Graph API 1.5 版中的 GA)。图形客户端库也支持目录架构扩展,您可以在 github 上的控制台示例中看到这一点:https : //github.com/AzureADSamples/ConsoleApp-GraphAPI-DotNet

HTH,