Azure Functions中的Azure AD身份验证

时间:2020-11-11 02:23:17

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

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

有2个组成部分:

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

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

问题:

  • 启用使用Express模式的Azure功能(通过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
  

1 个答案:

答案 0 :(得分:0)

如果使用EasyAuth保护Azure功能,则应使用access_token而不是id_token来调用它。如果您还有其他问题,请告诉我。