【问题标题】:How to get Azure AD Object ID in a hosted MVC App?如何在托管的 MVC 应用程序中获取 Azure AD 对象 ID?
【发布时间】:2020-11-07 15:12:54
【问题描述】:

我有一个作为 Azure Web 应用程序托管的 .Net Core 3.1 MVC 应用程序并启用了快速身份验证。现在在代码中,我想要 Azure AD 对象 ID(在控制器/视图中)。在所有示例和示例中,我看到了多种获取有关用户详细信息(例如名称等)的方法,但找不到任何有关获取对象 ID 的信息。如何获得相同的?

我的控制器很简单,像这样:

public IActionResult Index()
{
    return View();
}

在View中,index.cshtml也很通用。

在 startup.cs 中,我有:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }

请告诉我在控制器的 Index() 方法中获取 Azure AD 对象 ID 的方法。

【问题讨论】:

  • 对象 ID 是内部 Azure AD 标识符。您必须查询 Azure AD 才能找到它

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


【解决方案1】:

我相信 objectid 是作为 oid 声明传递的。它是您在 Express Authentication 中获得的 id_token 的一部分。

How do I get an OID claim in ASPCore from Azure B2C

http://schemas.microsoft.com/identity/claims/objectidentifier

User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value

【讨论】:

  • 我对它做了一些研究。看起来它应该按预期返回我的oid,但是我得到了空值。是否需要在 Azure 中设置任何配置,或者我缺少什么?
  • 我可以通过调用@User.GetObjectId()方法在.cshtml中获取用户的objectID。我在line 的示例中验证了它。
猜你喜欢
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多