Мое приложение имеет встроенный Auth0 для аутентификации. Когда я захожу на домашнюю страницу, отображается страница входа в систему auth0. Я пытаюсь войти в систему в моем приложении, развернутом с помощью Google Cloud Run. Локально все работает найти, и я могу аутентифицировать пользователя с тем же clientId, clientSecret и доменом. Но когда я развертываю его в облаке Google, я получаю исключение во время аутентификации:
Произошла ошибка при обмене кода авторизации на токены Auth0.
Код ошибки это: a0.api_error . Я не понимаю, почему это происходит. Я проверил те же проблемы: com.auth0.IdentityVerificationException: произошла ошибка при обмене кода авторизации на токены Auth0 но в этих случаях причиной root был неправильный clientSecret, что не в моем случае - я зарегистрировал его, и он такой же, как и для local. Единственная разница в том, что мое приложение в облаке Google использует https: //, а localhost - http://. Не уверен, что это имеет значение. Вот код:
private void checkAuthentication(VaadinRequest request) {
LOGGER.debug("checkAuthentication()");
VaadinServletRequest servletRequest = (VaadinServletRequest)request;
try {
Tokens tokens = getAuthenticationController().handle(servletRequest.getHttpServletRequest());
UserInfo userInfo = Auth0Util.resolveUser(tokens.getAccessToken());
Auth0Session.getCurrent().setAuth0Info(tokens,
userInfo);
Page.getCurrent().open(Auth0Util.AUTH0_APP_ROOT_PATH,
null);
} catch(IdentityVerificationException e) {
LOGGER.debug(e.getMessage());
switch (e.getCode()) {
case "a0.missing_authorization_code":
case "a0.invalid_state":
String url = getAuthenticationController().buildAuthorizeUrl(servletRequest,
Auth0Util.AUTH0_LOGIN_URL)
.withScope("openid profile email")
.build();
Page.getCurrent().open(url,
null);
break;
default:
LOGGER.error("unhandled identity verification code: " + e.getCode());
break;
}
} catch(Exception e) {
LOGGER.error(e.getMessage());
}
}
private AuthenticationController getAuthenticationController() {
LOGGER.info("Auth0 domain: " + Auth0Util.AUTH0_DOMAIN);
LOGGER.info("Auth0 client id: " + Auth0Util.AUTH0_CLIENT_ID);
LOGGER.info("Auth0 secret: " + Auth0Util.AUTH0_CLIENT_SECRET);
if(authenticationController == null) {
authenticationController =
AuthenticationController.newBuilder(Auth0Util.AUTH0_DOMAIN,
Auth0Util.AUTH0_CLIENT_ID,
Auth0Util.AUTH0_CLIENT_SECRET)
.build();
}
return authenticationController;
}
ОБНОВЛЕНИЕ:
Это журнал со стороны Auth0. Кажется, мне нужно найти, где установлен URI перенаправления.
URI перенаправления неверен. Вы отправили http://aniwareclinic....run.app, а мы ожидали https://aniwareclinic....run.app