我有一个使用 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 指定为绝对的,而不是像上面那样附加它来有效地复制它?