【问题标题】:How do I access additional data from Azure Active Directory from my ASP.NET Core application?如何从我的 ASP.NET Core 应用程序访问来自 Azure Active Directory 的其他数据?
【发布时间】:2019-09-23 14:22:32
【问题描述】:

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

Azure AD 身份验证的默认设置不包括任何模型或帐户页面,它只是将应用注册信息添加到您的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>

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

【问题讨论】:

  • 您是否尝试过使用 Azure AD API?

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


【解决方案1】:

应该在委托人的Claims中。

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

请参阅Active Directory Claims Mapping 了解声明列表和映射。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多