繁体   English   中英

如何从我的 ASP.NET 核心应用程序访问来自 Azure Active Directory 的其他数据?

[英]How do I access additional data from Azure Active Directory from my ASP.NET Core application?

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

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

@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>

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

它应该在委托人的索赔中。

在您的控制器或视图之一中放置一个断点。 在您的手表 window 中,您可以将用户强制转换为 ClaimsPrincipal 并查看从 Azure AD 返回的声明。

有关声明列表和映射,请参阅Active Directory 声明映射。

此外,ASP.Net Core 2.1 将 AccountController 和视图移动到 Razor Class 库中,因此除了部分视图之外,您不会在通常的目录中看到它们。 您可以使用此处的脚手架标识工具将它们拉回您的目录。

默认情况下,只有少数用户属性包含在令牌中,然后 map 包含在应用程序的用户声明原则中。 您可以使用Microsoft Graph Api 停用用户属性:

注意:获取用户只返回一组默认属性(businessPhones、displayName、givenName、id、jobTitle、mail、mobilePhone、officeLocation、preferredLanguage、surname、userPrincipalName)。 使用 $select 获取用户 object的其他属性和关系。

是 Microsoft Graph Auth 文档,这里是 ASP.NET Core 的代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM