gpt4 book ai didi

azure - 具有 Azure 应用服务身份验证的 .NET Core 应用

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

我的 web 应用程序是使用 .NET Core 开发的并部署在 Azure 中。我已启用 Azure 应用服务身份验证并将其配置为使用 Azure Active Directory。当我访问网络应用程序时,我确实被重定向到正确的登录页面。登录后,我可以浏览到端点 .auth/me 并查看我的用户存在声明。我还可以验证下面的请求 header 是否存在及其值:

  • X-MS-TOKEN-AAD-ID-TOKEN
  • X-MS-TOKEN-AAD-ACCESS-TOKEN
  • X-MS-TOKEN-AAD-EXPIRES-ON
  • X-MS-TOKEN-AAD-刷新-TOKEN

但我无法在我的 Controller 中检索这些声明。使用 User.Identity.isAuthenticated 始终为 false,并且 User.Identity.Claims 为空。

如何使用户经过身份验证并检索声明?

理论上,我也许可以检查请求 header (X-MS-TOKEN-AAD-ID-TOKEN)是否存在,然后检索端点 .auth/me 上存在的声明,但这看起来并不像正确的方法是什么?

编辑:我是否遇到了这里讨论的同一问题? (Trouble getting ClaimsPrincipal populated when using EasyAuth to authenticate against AAD on Azure App Service in a Asp.Net Core web app)

最佳答案

Working with user identities in your application状态:

App Service passes some user information to your application by using special headers. External requests prohibit these headers and will only be present if set by App Service Authentication / Authorization. Some example headers include:

  • X-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-ID
  • X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN
  • X-MS-TOKEN-FACEBOOK-EXPIRES-ON

Code that is written in any language or framework can get the information that it needs from these headers. For ASP.NET 4.6 apps, the ClaimsPrincipal is automatically set with the appropriate values.

our application can also obtain additional user details through an HTTP GET on the /.auth/me endpoint of your application. A valid token that's included with the request will return a JSON payload with details about the provider that's being used, the underlying provider token, and some other user information.

正如 Chris Gillum 建议的那样,您可以调用 /.auth/me 端点并检索用户声明。您可以编写自定义中间件来检查 X-MS-CLIENT-PRINCIPAL-ID header 并调用 /.auth/me 端点并手动设置用户声明。这是详细的代码示例,您可以引用类似的issue .

此外,您可以修改您的应用程序并显式添加身份验证中间件,而不是像邪恶Snobu 评论的那样使用应用程序服务身份验证/授权 (EasyAuth)。对于这种方法,您可以使用 ASP.Net Core OpenID Connect 中间件,详细信息您可以按照以下教程进行操作:

Integrating Azure AD (v2.0 endpoint) into an ASP.NET Core web app

Integrating Azure AD into an ASP.NET Core web app

关于azure - 具有 Azure 应用服务身份验证的 .NET Core 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49151961/

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