【问题标题】:AADSTS500112: The reply address 'http://testurl' does not match the reply address 'https://testurl' when requesting Authorization codeAADSTS500112:请求授权码时回复地址“http://testurl”与回复地址“https://testurl”不匹配
【发布时间】:2020-01-24 11:09:01
【问题描述】:

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

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

得到以下异常

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

'http://testUrl'与回复地址'https://testUrl'不匹配

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

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

【问题讨论】:

  • mkay,你为什么不添加http url?
  • azure 应用注册默认只允许 https url 作为重定向 url,所以我不能让它 http

标签: java azure-active-directory msal


【解决方案1】:

在生产环境中部署后,我们遇到了同样的问题。 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 的标头名称。

【讨论】:

    【解决方案2】:

    根据我的研究,Web 应用程序和服务的重定向 URL 必须以方案 https 开头。如果你想使用方案http,你可以使用http:\\localhost。更多详情请参考https://docs.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison#restrictions-on-redirect-urls

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 2020-12-03
      • 2018-10-30
      • 2018-06-22
      • 2017-07-19
      • 2016-08-23
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      相关资源
      最近更新 更多