Skip to content

JWK 인증 미들웨어

JWK 인증 미들웨어는 JWK(JSON Web Key)를 사용해 토큰을 검증하여 요청을 인증한다. Authorization 헤더를 확인하고, 설정된 경우 쿠키와 같은 다른 소스에서도 토큰을 검사한다. 구체적으로, 제공된 keys를 사용해 토큰을 검증하고, jwks_uri가 설정된 경우 해당 URI에서 키를 가져온다. 또한 cookie 옵션이 설정된 경우 쿠키에서 토큰을 추출하는 기능도 지원한다.

INFO

클라이언트에서 전송된 Authorization 헤더는 지정된 스키마를 따라야 한다.

예시: Bearer my.token.value 또는 Basic my.token.value

임포트

ts
import { Hono } from 'hono'
import { jwk } from 'hono/jwk'

사용법

ts
const app = new Hono()

app.use(
  '/auth/*',
  jwk({
    jwks_uri: `https://${backendServer}/.well-known/jwks.json`,
  })
)

app.get('/auth/page', (c) => {
  return c.text('인증되었습니다')
})

페이로드 가져오기:

ts
const app = new Hono()

app.use(
  '/auth/*',
  jwk({
    jwks_uri: `https://${backendServer}/.well-known/jwks.json`,
  })
)

app.get('/auth/page', (c) => {
  const payload = c.get('jwtPayload')
  return c.json(payload) // 예: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
})

옵션

optional keys: HonoJsonWebKey[] | (() => Promise<HonoJsonWebKey[]>)

공개 키의 값이나 이를 반환하는 함수를 지정한다.

optional jwks_uri: string

이 값을 설정하면, JWKs를 해당 URI에서 가져오려고 시도한다. keys가 포함된 JSON 응답을 기대하며, 이 keys는 제공된 keys 옵션에 추가된다.

이 값을 설정하면, 해당 값을 키로 사용해 쿠키 헤더에서 값을 가져온다. 이후 이 값을 토큰으로 검증한다.

Released under the MIT License.