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.