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

如何修改Azure AD登录时的AADSTS50020错误提示信息?

解决Drupal集成Azure AD登录时AADSTS50020错误的自定义提示问题

方法1:通过自定义模块捕获并替换错误消息

如果你的站点使用openid_connect模块(多数Azure AD集成场景的选择),可以通过实现钩子捕获错误并替换提示内容:

  1. 创建自定义模块(例如命名为custom_azure_error),在模块的.module文件中添加以下代码:
use Drupal\Core\Messenger\MessengerInterface;

/**
 * Implements hook_openid_connect_authorization_failure().
 */
function custom_azure_error_openid_connect_authorization_failure($client_id, $error, $error_description) {
  // 匹配AADSTS50020错误标识
  if (strpos($error_description, 'AADSTS50020') !== FALSE) {
    // 清除默认错误提示
    \Drupal::messenger()->deleteAll();
    // 添加自定义提示内容
    \Drupal::messenger()->addError(t('请联系xxx@domain.com申请账号权限'));
    // 终止默认错误处理流程
    return TRUE;
  }
}
  1. 启用该自定义模块,后续触发AADSTS50020错误时,将显示你设置的自定义提示。

方法2:调整Azure AD专用模块的错误处理逻辑

若你使用的是azure_ad专用模块,可通过以下方式修改:

  • 找到模块中处理登录回调的文件(通常为src/Controller/AzureAdController.php),在错误响应处理代码段中添加对AADSTS50020的判断:
// 在错误处理分支中添加判断
if ($error == 'invalid_grant' && strpos($error_description, 'AADSTS50020') !== FALSE) {
  \Drupal::messenger()->addError(t('请联系xxx@domain.com申请账号权限'));
} else {
  // 保留原有其他错误的处理逻辑
  \Drupal::messenger()->addError($error_description);
}

注意:不要直接修改 contrib 模块源码,建议通过模块重写或钩子重载实现,避免模块更新后代码丢失。

方法3:Azure AD门户配置错误重定向(可选)

你也可以在Azure AD门户设置自定义错误页面:

  • 登录Azure AD门户,找到你的应用注册
  • 进入「认证」→「高级设置」→「错误URL」
  • 设置Drupal站点内的自定义错误页面URL(页面内容为你的提示信息)
  • 触发错误时,用户将被重定向到该页面,替代默认的AAD错误提示

此方法适合需要展示更复杂提示内容的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:47:05