내 REST 백엔드에 대한 인증 필터를 구현하려는 경우 this (꽤 좋은) 안내를 따르고 있습니다. 그러나 Firebase의 인증 모듈을 사용하고 싶습니다. 따라서 'verify token'은 토큰을 firebase로 검증해야합니다.Firebase를 사용하여 JAX-RS 백엔드에 권한 요청 필터 설정
나는 이런 식으로 구현하려고했습니다 :
private void validateToken(String token, final ContainerRequestContext requestContext) throws Exception {
FirebaseAuth.getInstance().verifyIdToken(token)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
System.out.println("success");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
System.out.println("fail" + e);
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
}
}).addOnCompleteListener(new OnCompleteListener<FirebaseToken>() {
@Override
public void onComplete(@NonNull Task<FirebaseToken> task) {
}
});
}
그러나 문제는 지금 보이는 요청을 통해와 onFailure 갈 수 있도록 청취자가, 다른 스레드에서 실행 물론입니다입니다 청취자는 그것을 중단시킬 수 없다.
나는 아래쪽에 수면 타이머를 추가하여 작동 시켰지만 더 나은 솔루션을 원합니다. 나는 주 스레드를 synchronized
을 사용하여 잠그려고했으나 onCompleteListener에서 잠금을 해제하려고 시도했지만 작동하지 못했습니다.
이 문제를 해결할 수있는 좋은 방법이 있습니까?
미리 감사드립니다.
, 당신이 사용할 수있는 ['CountDownLatch'] (https://docs.oracle.com/javase/ 7/docs/api/java/util/concurrent/CountDownLatch.html) –
고마워! CountDownLatch를 조금 봤지만 구현 방법을 파악하지 못했습니다. 그렇게 할 수 있다고 생각된다면 나는 확실히 다른 것을 시도 할 것입니다. – Lars