2

我有一个使用 OpenId / OAuth2 / JWT 的 Micronaut 网络应用程序。在某些环境中,此设置一切正常,但是,在其他环境中,身份验证在调用配置的回调 uri 的步骤中失败。出于某种原因,在这些环境中,生成的 URL 是“http”而不是“https”。这会导致调用失败,因为我的应用程序只能通过 https 访问。

我不知道它为什么首先尝试使用 http,但是,如果我能够将回调 uri 指定为绝对/完整 URL,那么我可能可以在这些环境中解决这个异常。

我使用的一个示例 yml 配置:

  application:
    name: xxxxx
  security:
    authentication: idtoken
    oauth2:
      enabled: true
      clients:
        azure:
          client-id: ${OAUTH_CLIENT_ID}
          client-secret: ${OAUTH_CLIENT_SECRET}
          openid:
            issuer: https://login.microsoftonline.com/xxx
      callback-uri: ${OAUTH_CALLBACK_URI}
    redirect:
      login-success: ${LOGIN_SUCCESS_URL}
      logout: '/logout-handler/logout-success'
    endpoints:
      logout:
        get-allowed: true
    token:
      jwt:
        cookie:
          cookie-same-site: none
          cookie-secure: true

例如,在此配置中,如果我将 callback-uri 环境变量 (OAUTH_CALLBACK_URI) 设置为 /oauth/callback/azure,则似乎使用的完整 URL 是 http://xxxxx/oauth/callback/azure。但是,如果我对环境变量使用完整的 URL,例如 https://xxxxx/oauth/callback/azure,那么它使用的完整 URL 仍然会附加它,而不是将其用作绝对 URL,即 http://xxxxx /https://xxxxx/oauth/callback/azure。

是否可以将此 uri 指定为绝对的,而不是像上面那样附加它来有效地复制它?

4

1 回答 1

0

好消息。这已在 micronaut-security 2.3.4 https://github.com/micronaut-projects/micronaut-security/pull/644中修复

于 2021-06-10T21:42:11.450 回答