Java AADSTS500112:回复地址'http://testurl'与答复地址不匹配'https://testurl'请求授权代码时

Java AADSTS500112:回复地址'http://testurl'与答复地址不匹配'https://testurl'请求授权代码时,java,azure-active-directory,msal,Java,Azure Active Directory,Msal,我正在尝试将java应用程序与azure ad集成 我已经在azure中注册了一个应用程序并添加了重定向url,成功登录后,它被重定向到我的java应用程序,我正在使用msal库获取授权代码 获取以下异常 com.microsoft.aad.msal4j.MsalServiceException:AADSTS500112:回复地址 与回复地址“”不匹配 我在上面的url中看到的唯一区别是http和https,尽管我在应用程序注册中的重定向url以及microsoft登录url中的重定向uri中都

我正在尝试将java应用程序与azure ad集成

我已经在azure中注册了一个应用程序并添加了重定向url,成功登录后,它被重定向到我的java应用程序,我正在使用msal库获取授权代码

获取以下异常

com.microsoft.aad.msal4j.MsalServiceException:AADSTS500112:回复地址

与回复地址“”不匹配

我在上面的url中看到的唯一区别是http和https,尽管我在应用程序注册中的重定向url以及microsoft登录url中的重定向uri中都提到了https


顺便说一句,当我在服务器上托管它时,它与我的本地环境一起工作。

根据我的研究,web应用和服务的重定向URL必须以https方案开始。如果要使用http方案,只需使用http:\\localhost即可。有关更多详细信息,请参阅

在生产环境中部署后,我们遇到了相同的问题。https变为http的原因是因为我在一个负载平衡的环境中,外部URL与内部URL不同,负载平衡器卸载了SSL处理。当来自azure的http请求到达我们的web筛选器时,httpRequest.getRequestURL.toString将获得http而不是https。我们所做的是,要求devops团队在httprequest中添加一个头,并将原始url发送到负载平衡器,在我们的代码中,我们提取http头,而不是http请求本身

具体来说,就是改变

字符串currentUri=httpRequest.getRequestURL.toString; 到

字符串currentUri=httpRequest.req.getHeaderHEADER\u PROXY\u URL;
HEADER_PROXY_URL是devops注入原始URL的头名称

mkay,为什么不添加http url?azure应用程序注册默认情况下只允许https url作为重定向url,因此我无法将其设置为http