Microsoft Graph API 和 OAuth 令牌的 HaProxy 配置

Microsoft Graph API 和 OAuth 令牌的 HaProxy 配置

我不是 HA 代理方面的专家,这可能是我的请求失败的首要原因。

我有一个 Java 应用程序,它位于无法访问 Internet 的服务器上。只能通过 HA 代理进行访问。因此,我尝试为 Microsoft Graph API 配置 HA 代理。

Microsoft Graph 使用以下两个域:

https://graph.microsoft.com--> 对于 Graph API 调用 https://login.microsoftonline.com--> 对于 OAUTH 令牌

我可以从我的 Haproxy 服务器调用这两个 URL。我可以使用以下 curl 命令获取持有者令牌:

curl -k -X POST \
  https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id={client-id}' \
  --data-urlencode 'client_secret={client-secret}' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'scope=https://graph.microsoft.com/.default

响应如下:

{
  "token_type": "Bearer",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "<<Access Token>>"
}

我已经将 haproxy 配置如下:

frontend nicrosoft_graph_front
  bind *:443 ssl crt /etc/ssl/certs/spteluat.pem no-tls-tickets no-tlsv11
  mode http
  acl login_path path_beg /mslogin
  use_backend login_backend if login_path

backend login_backend
  mode http
  option forwardfor
  balance roundrobin
  server loginserver login.microsoftonline.com:443 check check-ssl verify none

它不起作用。当使用相同的 curl 命令时:

  curl -k -X POST \
  https://localhost/mslogin/c648fe9a-244d-49b5-a052-6e961eb048b8/oauth2/v2.0/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id=901f8630-ed72-40c3-ad7a-5e2bfb61fe87' \
  --data-urlencode 'client_secret=U0z8Q~p3r~-GoKWOpxjFhpFeeQ847dWh1Dooua0p' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'scope=https://graph.microsoft.com/.default'

它给了我错误:

<html><body><h1>502 Bad Gateway</h1>
The server returned an invalid or incomplete response.
</body></html>

在某些时候,我相信在后端配置中添加以下内容时没有取得多大成功

http-request set-path %[path,regsub(^/mslogin/,/)]

但随后它开始返回 302,我认为这是由于微软登录 URL 有一些重定向(我不知道如何处理这些)。

任何帮助我如何才能使这个 HA 配置正常工作。

相关内容