【问题标题】:Azure AD Authentication in Azure FunctionsAzure Functions 中的 Azure AD 身份验证
【发布时间】:2020-11-12 10:05:04
【问题描述】:

我是 Azure AD 的新手,正在尝试在 Azure Functions 上启用 Azure AD 身份验证。下面是架构。

有两个组件:

  1. 前端 Web 应用程序(Nodejs + Express 应用程序)
  2. 后端 API(使用 .NET 核心的 Azure Functions)
  • 已在前端应用程序上启用 AD 身份验证。当用户使用其 AD 凭据登录时,应用会从 Azure 获取访问令牌、刷新令牌和 id 令牌。
  • 在 Azure Functions 上也启用了 AD 身份验证。
  • 当我们尝试访问 Azure Functions 时,来自 Web 应用程序的 id_token 作为承载令牌在 Auth 标头中传递。

参考:https://docs.microsoft.com/en-us/azure/app-service/tutorial-auth-aad?pivots=platform-linux

问题:

  • 启用使用 Express 模式的 Azure Functions 身份验证/授权(通过 Azure 门户)时,我无法访问或发布 Azure 函数。如果 EasyAuth 已关闭,我可以访问这些功能而不会出现任何问题。

请建议我在这里缺少什么。提前致谢!

以下是来自 LogStream 的异常信息:

Unhandled exception in request pipeline: System.Net.WebException: The remote server returned an error: (400) Bad Request.
2020-11-11T01:28:38.421239842Z: [INFO]           at System.Net.HttpWebRequest.GetResponse()
2020-11-11T01:28:38.429941331Z: [INFO]           at Microsoft.Azure.AppService.Middleware.OpenIdConnectConfiguration.Download(String url) in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/OpenIdConnectConfiguration.cs:line 62
2020-11-11T01:28:38.437673222Z: [INFO]           at Microsoft.Azure.AppService.Middleware.OpenIdConnectConfiguration.ConfigManager.RefreshConfiguration() in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/OpenIdConnectConfiguration.cs:line 163
2020-11-11T01:28:38.437688622Z: [INFO]           at Microsoft.Azure.AppService.Middleware.OpenIdConnectConfiguration.ConfigManager.GetCurrentConfiguration() in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/OpenIdConnectConfiguration.cs:line 150
2020-11-11T01:28:38.437693322Z: [INFO]           at Microsoft.Azure.AppService.Middleware.AzureActiveDirectoryProvider.GetDefault() in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/IdentityProviders/AzureActiveDirectoryProvider.cs:line 808
2020-11-11T01:28:38.437697222Z: [INFO]           at Microsoft.Azure.AppService.Middleware.EasyAuthModule.AuthenticateAsync(HttpContextBase context)
2020-11-11T01:28:38.437712122Z: [INFO]           at Microsoft.Azure.AppService.Middleware.EasyAuthModule.OnAuthenticateRequestAsync(HttpContextBase context) in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/EasyAuthModule.cs:line 243
2020-11-11T01:28:38.437716222Z: [INFO]           at Microsoft.Azure.AppService.MiddlewareShim.Startup.OnRequest(HttpContext context) in /EasyAuth/Middleware.Host/Startup.cs:line 124
  

【问题讨论】:

标签: c# node.js azure azure-active-directory azure-functions


【解决方案1】:

如果您使用 EasyAuth 来保护您的 Azure 函数,您应该使用 access_token 而不是 id_token 来调用它。如果您有任何其他问题,请告诉我。

【讨论】:

  • 谢谢斯坦利。我的更新.. 我尝试将从我的门户网站(登录用户并从 AD 获取 id_token、access_token 和 refresh_token 的应用服务)获得的 id_token 传递给我的 Azure Functions。我在通过 Postman 尝试时收到 401 Unauthorized。但我可以从浏览器(通过 AD 登录)访问函数/API。
  • @user591410 欢迎!您应该在 Auth 标头中使用 access_token 作为 Bearer 令牌,而不是 id_token 来调用您的 Azure Functions ,您尝试过吗?
猜你喜欢
  • 2018-03-27
  • 2019-09-24
  • 2019-06-25
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多