我正在尝试将 java 应用程序与 azure ad 集成。我已经在azure中注册了一个应用程序并添加了重定向url,成功登录后,它被重定向到我的java应用程序,我在其中使用msal库获取授权代码。得到以下异常com.microsoft.aad.msal4j.MsalServiceException:AADSTS500112:回复地址“ http://testUrl ”与回复地址“ https://testUrl”不匹配我在上面的 URL 中看到的唯一区别是 http 和 https,尽管我在应用程序注册中的重定向 URL 以及 Microsoft 登录 URL 中的重定向 URL 中提到了 https。顺便说一句,它正在与我的本地环境一起工作,而当我将其托管在服务器上时则不起作用。
2 回答
万千封印
TA贡献1891条经验 获得超3个赞
部署到生产环境后,我们也遇到了同样的问题。https 变成 http 的原因是因为我处于负载平衡环境中,外部 URL 与内部 URL 不同(负载平衡器卸载了 SSL 处理)。当来自 azure 的 http 请求到达我们的 Web 过滤器时,httpRequest.getRequestURL().toString() 获取 http 而不是 https。我们所做的是,要求 DevOps 团队在 httprequest 中添加一个标头,并将原始 url 发送到负载均衡器,并且在我们的代码中,我们提取 http 标头而不是 http 请求本身。
具体来说,改变
String currentUri = httpRequest.getRequestURL().toString();
到
String currentUri = httpRequest.req.getHeader(HEADER_PROXY_URL);
这HEADER_PROXY_URL
是 devops 注入原始 url 的标头名称。
杨__羊羊
TA贡献1943条经验 获得超7个赞
根据我的研究,网络应用程序和服务的重定向 URL 必须以 schema 开头https
。如果你想使用该方案http
,你就可以使用http:\\localhost
。
添加回答
举报
0/150
提交
取消