gpt4 book ai didi

azure - Azure 中的用户身份

转载 作者:行者123 更新时间:2023-12-03 02:14:14 26 4
gpt4 key购买 nike

我开始关注 Microsoft Azure,以期在那里部署 future 的 Web 应用程序。大多数应用程序都会有一些“用户身份”的概念,因此使用云的好处之一就是委托(delegate)身份验证。

第一步是创建 Visual Studio 的开箱即用 MVC 应用程序(无身份验证)并部署它,这非常简单。下一步是将身份验证分层到该应用程序上。我纯粹通过 Azure 门户完成此操作,没有更改任何代码。目前仅使用 Azure AD。再说一次,很好。第三步是编写另一个测试装置。我使用了 Windows 身份验证、ASP.NET Core MVC Web 应用程序,并在 Controller 中添加了代码:

string User = HttpContext.User.Identity.Name;
if (String.IsNullOrEmpty(User)) User = "<unknown>";

ViewBag.UserName = User;
return View();

在 View 中,添加了一些 noddy razor 来显示名称。本地测试过,没问题。上传到Azure,什么都没有。既不是未经身份验证的应用程序(就 Azure 门户而言),也不是经过 Azure AD 身份验证的应用程序。

深入挖掘后,我发现了 Nuget 包 Microsoft.Identity 和 Azure.Identity,它们看起来很有前途,但现在却令人困惑。我两天前才开始这样做。

有什么指点吗?

我正在寻找一个要部署到 Azure 的 c# asp.net core Web 应用程序,并让该应用程序显示某种识别信息,表明它知道最终用户是谁。因此,基本上,需要在 Controller 中放置一些 C# 代码来替换我的非工作代码。

最佳答案

从你写的内容中,我明白了这一点:

  • 您已设置 Azure 应用服务
  • 您已使用“轻松身份验证”来利用 Azure Active Directory 身份验证
  • 您想要访问应用程序中经过身份验证的用户的信息

您应该看看“Work with user identities in Azure App Service authentication ”。

Access user claims in app codeFor all language frameworks, App Service makes the claims in the incoming token (whether from an authenticated end user or a client application) available to your code by injecting them into the request headers. External requests aren't allowed to set these headers, so they are present only if set by App Service. Some example headers include:

  • X-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-ID

Code that is written in any language or framework can get the information that it needs from these headers.

专门针对 ASP.NET Core,您确实可以使用 Microsoft.Identity.Web ,如概述here .

From version 1.2.0, the same code for your web app written with Microsoft.Identity.Web will work seamlessly with our without EasyAuth. Your web app can sign-in users and possibly call web APIs or Microsoft Graph. Indeed, Microsoft.Identity.Web now detects that the app is hosted in App Services, and uses that authentication.

还有一个完整的example blog post ,我认为对您来说关键部分是:

<PackageReference Include="Microsoft.Identity.Web" Version="1.4.1" />

在 Startup.cs 中:

public void ConfigureServices(IServiceCollection services) {
//...
services.AddMicrosoftIdentityWebAppAuthentication(Configuration);
//...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
//...
app.UseAuthentication();
app.UseAuthorization();
//...
}

关于azure - Azure 中的用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72002055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com