如何在托管的 MVC 应用程序中获取 Azure AD 对象 ID?
Posted
技术标签:
【中文标题】如何在托管的 MVC 应用程序中获取 Azure AD 对象 ID?【英文标题】:How to get Azure AD Object ID in a hosted MVC App? 【发布时间】: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 才能找到它 【参考方案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 的示例中验证了它。以上是关于如何在托管的 MVC 应用程序中获取 Azure AD 对象 ID?的主要内容,如果未能解决你的问题,请参考以下文章
托管在 Azure 上的点网 mvc 应用程序突然一次又一次地重定向到登录页面,直到重新启动
如何使用 asp.net mvc 从 azure 获取访问令牌
从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常