Hyperlane의 인증 미들웨어
보안은 모든 웹 애플리케이션의 우선순위입니다. 리소스에 누가 접근하는지 제어해야 합니다. Hyperlane에서는 미들웨어를 사용하여 이를 수행합니다. 미들웨어는 게이트키퍼 역할을 합니다. 코드가 실행되기 전에 요청을 가로챕니다.
Hyperlane 미들웨어 작동 방식
미들웨어는 ServerHook 트레이트를 사용합니다. 두 가지 주요 부분으로 구성됩니다:
• new(): 연결을 설정합니다.
• handle(): 모든 요청에 대해 실행됩니다. 여기서 보안을 확인합니다.
handle 메서드는 상태를 반환합니다:
• Status::Continue: 요청이 안전합니다. 통과시킵니다.
• Status::Reject: 요청이 안전하지 않습니다. 여기서 중단합니다.
일반적인 인증 패턴
헤더 확인
Authorization헤더를 확인할 수 있습니다. 헤더가 누락된 경우 401 Unauthorized 상태를 반환합니다. 즉시 요청을 거부하세요.Bearer 토큰 대부분의 API는 Bearer 토큰을 사용합니다. 미들웨어는 다음과 같이 동작해야 합니다: • 헤더가 "Bearer "로 시작하는지 확인합니다. • 토큰을 추출합니다. • 나중에 사용할 수 있도록 컨텍스트에 토큰을 저장합니다.
속성 필터링 Hyperlane에서는 간단한 매크로를 사용하여 요청을 필터링할 수 있습니다. 다음과 같은 방식으로 액세스를 제한할 수 있습니다: • HTTP 메서드(GET 또는 POST 등). • 호스트 이름. • 특정 경로. • Referer 헤더.
보안 API를 위한 모범 사례
• Fail fast(빠른 실패). 서버 리소스를 절약하기 위해 잘못된 요청은 조기에 거부하세요. • 컨텍스트 속성을 사용하세요. 검증된 토큰을 컨텍스트에 저장하여 앱의 다른 부분에서 다시 파싱할 필요 없이 읽을 수 있도록 합니다. • CORS를 올바르게 처리하세요. 인증을 수행하기 전에 CORS 헤더를 설정하세요. 이렇게 하면 브라우저가 오류 메시지를 읽을 수 있습니다. • 미들웨어를 계층화하세요. 우선순위 번호를 사용하여 순서를 결정합니다. CORS를 먼저 실행한 다음 인증을 실행하세요. • 스트림을 관리하세요. 요청 전송에 실패하면 오류를 방지하기 위해 스트림을 닫으세요.
이러한 도구들을 사용하면 안전하고 체계적인 시스템을 구축할 수 있습니다.
Source: https://dev.to/tengxgfyrz67s/authentication-middleware-151c Project Code: https://github.com/hyperlane-dev/hyperlane