Я использую JavaEE и JSF в проекте для обработки некоторых данных. Я также использую Firebase в качестве механизма аутентификации, который также используется как часть проекта RestAPI. Это строки кода, используемые в AuthorizationFilter implements ContainerRequestFilter
:
try {
FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(token);
account = new FirebaseAccount(decodedToken.getUid(), decodedToken.getName(), decodedToken.getEmail(),
decodedToken.getPicture());
container.setProperty("account", decodedToken);
request.setAttribute("account", account);
System.out.println("successful login");
} catch (FirebaseAuthException e) {
e.printStackTrace();
System.out.println("Token oauth2 not valid");
}
. В качестве метода для входа в систему я использую эту собственную реализацию Firebase:
public boolean signInWithUsernameAndPassword(String email, String password, IFirebaseLoginHandler handler) {
FirebaseLoginUsernameAndPasswordRequest request = new FirebaseLoginUsernameAndPasswordRequest(email, password);
Unirest.config().setObjectMapper(new GsonObjectMapper());
HttpResponse<JsonNode> reponse = Unirest.post(URL_SIGN_IN + API_LEY).body(request).asJson();
Gson gson = new Gson();
if (reponse.getStatus() == HttpStatus.SC_OK) {
FirebaseLoginResponse loginResponse = gson.fromJson(reponse.getBody().toString(),
FirebaseLoginResponse.class);
handler.onSuccess(loginResponse);
return true;
} else {
FirebaseLoginErrorPassword errorPassword = gson.fromJson(reponse.getBody().toString(),
FirebaseLoginErrorPassword.class);
handler.onError(errorPassword);
return false;
}
}
ПроблемаСамостоятельная реализация заключается в том, что я не обрабатываю токен обновления, поэтому через час истекает срок действия кода. Есть ли какая-либо библиотека Java, которую я могу использовать в своем проекте JSF? В любом случае, как я могу обработать механизм обновления токенов?