问题描述
我有一个使用OpenId / OAuth2 / JWT的Micronaut网络应用程序。在某些环境中,此设置确实可以很好地工作,但是,在其他环境中,在调用配置的callback-uri的步骤期间,验证失败。由于某些原因,在这些环境中,生成的URL是“ http”而不是“ https”。由于只能通过https访问我的应用程序,因此导致调用失败。
我不知道为什么它首先尝试使用http,但是,如果我能够将callback-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指定为一个绝对的uri,而不是像上面的有效复制一样将其附加到上面?
解决方法
好消息。这已在 micronaut-security 2.3.4 中修复 https://github.com/micronaut-projects/micronaut-security/pull/644