OTRS CE6中OAuth2邮件认证重定向URI配置问题求助
问题背景
已完成OTRS CE官方手册中的OAuth2邮件认证配置步骤,但出现两类错误:
错误1:重定向URI不匹配
Request Id: 2612ca88-32c6-40b2-b20e-..........
Correlation Id: 42440fe1-a06e-47a6-.........
Timestamp: 2022-11-04T15:53:04Z
Message: AADSTS50011: The redirect URI 'http://_______.________.be/otrs/get-oauth2-token-by-authorization-code.pl' specified in the request does not match the redirect URIs configured for the application '99fe24c1-036a-4e31-b80a-5dce3220fef3'. Make sure the redirect URI sent in the request matches one added to your application in the Azure portal. Navigate to https://aka.ms/redirectUriMismatchError to learn more about how to fix this.
表现为请求使用HTTP而非HTTPS,修改为HTTPS后仍无法正常工作,出现如下后端错误:
错误2:令牌请求失败
Backend ERROR: OTRS-CGI-20 Perl: 5.26.1 OS: linux Time: Mon Nov 7 10:10:28 2022 Message: Failed to get response for token request by authorization code for OAuth2 token configuration with ID 1. RemoteAddress: 109.135.15.48 RequestURI: /otrs/get-oauth2-token-by-authorization-code.pl?code=0.ATsAKmbiQA8SC0-TSPotY_1GiMEk_plqAzFOuApdzjIg_vM7AI4.AgABAAIAAAD--DLA3VO7QrddgJg7WevrAgDs_wQA9P-lFxUR0K8wRyUgurdKYmyVfbMWKTtnfp5Vja-sFQUlkJvPTpV6JQPBpqOQGFp8vjKJ9fwnnqTbppSVODOTUzBuIsO3UbeeqRysUEIILvS6hfSdkxES8rG_BxS7eUZOgyRd_ZP8efnhejl51L_4DABMkLJ83Z4QG_p0xQBTcmoMRBwpNMHG5cuNRctvHnaC87SLx2snqTJ8olb8D5oWid1xcFpx68urHjH68-ALJ5BVW9dKtmqjgkWJSG4yoK9NQvxJk-wD_uzihUdTTPhsibv8G0Q-tlToaOgdnoOApFBRPb9YpG1oukfo5wfHVBuObcppyQqPO12iSPTwiiDR4xOTtbcydmS3cn8xqs0N2_ivCha1cUIUMb4_1XzzcWEWBZGejsQs5nYEKAurVeLhv8quZ5wLIn1H9bVYSmmQKe61H4XwFBAuLinv2BttuqSmA29wfSl6TG_HAuWBHCZ5FfFswrsg-0j889LHMi-cWwe16nWcLg2er6sDsugYDGL4d_8C2MQ9lZB7SqDcCG5UYP7vmxN6HEQzlTjsOSZuonjt6vP1SJb4PpjYQ-EKb9Dn0Zppi46G5hValc_CGfMGZNkT3lHaZVhek5nh5VOtjUKaJVP08n3rHcplpWPMNwRWgBcME0UshUhimePLwolXUmY1rVreIl8_i2V3q0JcfWBv-xYipirn80yt3VplfdEchcJPS_fglC2nSBTf7J0y_M5n-YqvJIctkHX8ZuSTvpcL8CwOSIRe9MbNbwc9xjmP9buOMMCEloZZjCwAslXbnetaefarfExS0evW8ME&state=ConfigID1&session_state=c69356ad-cdd3-4fc7-a7d4-b756f5134ac7 Traceback (14240): Module: Kernel::System::OAuth2Token::RequestTokenByAuthorizationCode Line: 776 Module: Kernel::Modules::AdminOAuth2TokenConfig::_RequestTokenByAuthorizationCode Line: 410 Module: Kernel::Modules::AdminOAuth2TokenConfig::Run Line: 52 Module: Kernel::System::Web::InterfaceAgent::Run Line: 1172 Module: ModPerl::ROOT::ModPerl::Registry::opt_otrs_bin_cgi_2dbin_get_2doauth2_2dtoken_2dby_2dauthorization_2dcode_2epl::handler Line: 50 Module: (eval) (v1.99) Line: 207 Module: ModPerl::RegistryCooker::run (v1.99) Line: 207 Module: ModPerl::RegistryCooker::default_handler (v1.99) Line: 173 Module: ModPerl::Registry::handler (v1.99) Line: 32
解决方案
1. 修正重定向URI双向配置
- 登录Azure门户,找到对应应用(ID:99fe24c1-036a-4e31-b80a-5dce3220fef3),添加完整的HTTPS重定向URI:
https://_______.________.be/otrs/get-oauth2-token-by-authorization-code.pl,同时删除旧的HTTP URI。 - 在OTRS系统的OAuth2令牌配置页面,确保回调URL设置为相同的HTTPS地址。
2. 修复OTRS的协议识别问题
OTRS可能因反向代理配置错误,无法正确识别客户端使用的HTTPS协议,导致生成HTTP重定向URI:
- 编辑OTRS配置文件
Kernel/Config.pm,添加或修改以下参数:$Self{'HttpType'} = 'https'; $Self{'WebBaseURL'} = 'https://_______.________.be/otrs'; - 若使用反向代理,需确保代理服务器向OTRS传递正确的协议头:
- Apache:添加
RequestHeader set X-Forwarded-Proto "https" - Nginx:添加
proxy_set_header X-Forwarded-Proto $scheme;
- Apache:添加
3. 重置认证会话
- 清空浏览器缓存和Cookie,避免旧的HTTP会话干扰。
- 删除OTRS中已创建的OAuth2令牌配置,重新按手册步骤配置,确保所有URL均使用HTTPS。
4. 排查令牌请求失败的深层原因
- 查看OTRS系统日志(
var/log/目录下的相关日志),获取RequestTokenByAuthorizationCode模块第776行的具体错误信息,例如网络连接问题、权限不足、Azure应用配置错误等。 - 确认Azure应用已配置正确的API权限:需添加
IMAP.AccessAsUser.All、POP.AccessAsUser.All等邮件相关权限,并完成管理员同意操作。 - 测试OTRS服务器与Azure OAuth2端点的连通性,可通过
curl https://login.microsoftonline.com命令验证网络是否通畅。
内容的提问来源于stack exchange,提问作者data2info

