대머리개발자

Armeria 프레임워크 - Authorizer<HttpRequest> 본문

개발이야기/자봐

Armeria 프레임워크 - Authorizer<HttpRequest>

대머리개발자 2023. 10. 12. 10:20
728x90

JWT 토큰에 대한 검증을 하는 부분이다. Authorizer 구현해서 true/false만 넘겨주면 된다.

@ExceptionHandler(Oauth2ExceptionHandler.class)
public class AuthorizerConfig implements Authorizer<HttpRequest> {

    private final Logger logger = LoggerFactory.getLogger("logging.access");

    @Override
    public @NonNull CompletionStage<Boolean> authorize(ServiceRequestContext ctx, @Nullable HttpRequest request) {

        if(request.headers().contains("authorization")){
            // 검증에 실패 하면 끝!
            String jwt = Objects.requireNonNull(request.headers().get("authorization")).split( "Bearer ")[1];
            ServiceUtil.getJwtService().checkJwt(jwt);          
        }else{
            throw new AuthorizationException("IllegalArgumentException");
        }
        return completedFuture(true);
    }
}

해당 서비스를 데코레이터에 넣어 주면 모든 요청에  JWT를 체크 한다.

serverBuilder.decorator((AuthService.newDecorator(new AuthorizerConfig())));

 

이슈는 실패시 401에 대한 Response만!! 간다... 내부적으로 예외 처리를 어떻게 하는지는 확인하지 않았다. .

 

그냥 새롭게 만들자.  ㅎ

public class AuthorizerConfig implements Authorizer<HttpRequest> 

---> 

public class AuthService extends SimpleDecoratingHttpService

새롭게 만든 인증서비스를 데코에 쏘옥!

serverBuilder.decorator(AuthService::new);

 

예외는 항상 친절해야 한다.!! 내 코딩의 목표 중 하나다. ㅎ 그래야 유지보수가 편하다.

728x90

'개발이야기 > 자봐' 카테고리의 다른 글

프로젝트 디펜더시 최신화  (0) 2024.03.12
[JPA] DB에서 자동 생성된값 바인딩  (0) 2024.02.28
Armeria 프레임워크 - 리다이렉트(2)  (1) 2023.10.06
flatMap vs Map  (2) 2023.09.15
reactive 리팩토리..  (0) 2023.08.04