c# - 如何从 ASP.NET Core 应用程序访问 Azure Active Directory 的其他数据?

标签 c# azure asp.net-core azure-active-directory

我在 ASP.NET Core 应用程序中使用了来自 Azure 平台的公司 Active Directory。当我第一次创建项目时,我将其设置为我的身份验证模型。我需要访问用户的其他详细信息,而不仅仅是他们的电子邮件地址或姓名,例如他们的 country , departmentusage location 。我不确定你是如何做到这一点的,并且想知道是否有人可以提供帮助。

Azure AD 身份验证的默认设置不包含任何模型或帐户页面,它只是将应用注册信息添加到您的 appsettings.json并添加使用身份的登录部分 View :

@using System.Security.Principal

<ul class="navbar-nav">
@if (User.Identity.IsAuthenticated)
{
        <li class="nav-item">
            <span class="nav-text text-dark">Hello @User.Identity.Name!</span>
        </li>
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a>
        </li>
}
else
{
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="AzureAD" asp-controller="Account" asp-action="SignIn">Sign in</a>
        </li>
}
</ul>

我有什么方法可以扩展它以获取上述字段,或者我是否需要创建新的东西?蒂亚。

最佳答案

应包含在委托(delegate)人的声明中。

在您的 Controller 或 View 之一中放置一个断点。在监 window 口中,您可以将用户转换为 ClaimsPrincipal 并查看从 Azure AD 返回的声明。

参见Active Directory Claims Mapping用于声明列表和映射。

此外,ASP.Net Core 2.1 将 AccountController 和 View 移至 Razor 类库中,因此您不会在保存部分 View 的常用目录中看到它们。您可以使用脚手架身份工具 here. 将它们拉回到您的目录中

关于c# - 如何从 ASP.NET Core 应用程序访问 Azure Active Directory 的其他数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58064540/

相关文章:

c# - 如何使用 WPF Modern-UI 对菜单链接进行数据绑定(bind)

c# - 自动映射器前提条件,如果 src 值为 0,则映射 null

Azure 点到站点 VPN 路由

azure - 通过 Azure 门户获取的 Servicebus SAS token 的时间戳是多少?

c# - 如何使用 LINQ 在一个集合中选择一个集合?

c# - 从客户端(javascript/jquery)在 asp.net c# 中的特定时间触发回发

azure - 我们可以限制用户从某些 IP 地址访问 Office 365(在 Azure 上)吗?

asp.net - EF Core 实体循环引用

jquery - 如何在 ASP 形式的 MVC Core 上使用日期选择器

c# - ASP.NET Core MVC 中的 HttpContext.Timestamp 在哪里?