You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions中运行AzureAD模块遇认证错误求助

Azure Functions中AzureAD模块认证失败问题解决

问题描述

在Azure Functions中运行AzureAD模块时遭遇认证失败,已执行以下操作仍未解决:

  • 在requirements.psd1中更新AzureAD模块
  • 重启Function App
  • 使用-UseWindowsPowerShell参数导入模块

使用的代码:

Import-Module AzureAD -UseWindowsPowerShell;

$cred = New-Object Management.Automation.PSCredential ($user, $secpasswd);

Connect-AzureAD -Credential $cred;

出现的错误信息:

2022-10-08T03:23:21Z [Warning] 警告: 模块AzureAD通过WinPSCompatSession远程会话加载在Windows PowerShell中;请注意此模块命令的所有输入和输出均为反序列化对象。若要将此模块加载到PowerShell中,请使用Import-Module -SkipEditionCheck语法。
2022-10-08T03:23:23Z [Error] 错误: 发生一个或多个错误。:

OriginInfo : localhost
Exception :
Type : System.Management.Automation.RemoteException
SerializedRemoteException : Microsoft.Open.Azure.AD.CommonLibrary.AadAuthenticationFailedException: 发生一个或多个错误。: ---> System.AggregateException: 发生一个或多个错误。 ---> Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException ---> System.Net.Http.HttpRequestException: 响应状态代码未指示成功: 400 (BadRequest)。 ---> Microsoft.IdentityModel.Clients.ActiveDirectory.AdalException: : 未知错误
--- 内部异常堆栈跟踪结束 ---
--- 内部异常堆栈跟踪结束 ---
在 Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Http.AdalHttpClient.<GetResponseAsync>d__221.MoveNext() --- 从之前位置抛出异常的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Http.AdalHttpClient.&lt;GetResponseAsync&gt;d__211.MoveNext()
--- 从之前位置抛出异常的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.OAuth2.UserRealmDiscoveryResponse.<CreateByDiscoveryAsync>d__24.MoveNext()
--- 从之前位置抛出异常的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Flows.AcquireTokenNonInteractiveHandler.<PreTokenRequestAsync>d__5.MoveNext()
--- 从之前位置抛出异常的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Flows.AcquireTokenHandlerBase.<RunAsync>d__57.MoveNext()
--- 从之前位置抛出异常的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.<AcquireTokenCommonAsync>d__37.MoveNext()
--- 从之前位置抛出异常的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions.<AcquireTokenAsync>d__0.MoveNext()
--- 内部异常堆栈跟踪结束 ---
在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
在 Microsoft.Open.Azure.AD.CommonLibrary.UserTokenProvider.DoAcquireToken(AdalConfiguration config, PromptBehavior promptBehavior, String userId, SecureString password) 位置 X:\bt\1218881\repo\src\dev\PowerShell.V2\CommonLibrary\TokenProvider\UserTokenProvider.cs:行号 228
在 Microsoft.Open.Azure.AD.CommonLibrary.UserTokenProvider.SafeAquireToken(AdalConfiguration config, ShowDialog showDialog, String userId, SecureString password, Exception& ex) 位置 X:\bt\1218881\repo\src\dev\PowerShell.V2\CommonLibrary\TokenProvider\UserTokenProvider.cs:行号 152
--- 内部异常堆栈跟踪结束 ---

解决步骤

1. 更换模块导入方式

警告明确提示使用-SkipEditionCheck替代-UseWindowsPowerShell,后者通过兼容会话运行会导致序列化问题,修改导入命令:

Import-Module AzureAD -SkipEditionCheck

2. 替换为推荐的模块

AzureAD模块已被官方弃用,优先使用Microsoft Graph PowerShell模块,它更适配Azure Functions环境,支持非交互式认证。若需临时使用AzureAD相关模块,可尝试AzureADPreview:

  • 在requirements.psd1中添加'AzureADPreview' = 'latest'
  • 导入命令改为:Import-Module AzureADPreview -SkipEditionCheck

3. 检查认证参数与权限

  • 确认$user为完整用户主体名称(UPN),格式如user@yourdomain.com
  • 验证$secpasswd是否正确转换为SecureString,可通过ConvertTo-SecureString $password -AsPlainText -Force生成
  • 确保目标用户未启用MFA(用户名密码认证不支持MFA),且拥有AzureAD的访问权限
  • 优先使用服务主体认证替代用户名密码,示例命令:
    Connect-AzureAD -TenantId $tenantId -ApplicationId $appId -CertificateThumbprint $thumbprint
    

4. 配置Function App环境

  • 在Function App的应用设置中,将WEBSITE_LOAD_USER_PROFILE设置为1,确保模块能正确加载用户配置
  • 确认Function App运行的PowerShell版本为7.x,与模块版本兼容

5. 排查网络访问

确保Function App所在网络未阻止AzureAD认证所需的端点:

  • login.microsoftonline.com
  • graph.windows.net

内容的提问来源于stack exchange,提问作者wfwca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:55:31