コンテンツにスキップ

JWT認証ミドルウェア

JWT認証ミドルウェアは、JWTでトークンを検証することにより認証を提供します。 cookie オプションが設定されていない場合、ミドルウェアは Authorization ヘッダーを確認します。

情報

クライアントから送信される Authorization ヘッダーには、指定されたスキームが必要です。

例: Bearer my.token.value または Basic my.token.value

インポート

TypeScript
import { Hono } from 'hono'
import { jwt } from 'hono/jwt'
import type { JwtVariables } from 'hono/jwt'

使用方法

TypeScript
// Specify the variable types to infer the `c.get('jwtPayload')`:
type Variables = JwtVariables

const app = new Hono<{ Variables: Variables }>()

app.use(
  '/auth/*',
  jwt({
    secret: 'it-is-very-secret',
  })
)

app.get('/auth/page', (c) => {
  return c.text('You are authorized')
})

ペイロードを取得する

TypeScript
const app = new Hono()

app.use(
  '/auth/*',
  jwt({
    secret: 'it-is-very-secret',
  })
)

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

ヒント

jwt() は単なるミドルウェア関数です。環境変数(例: c.env.JWT_SECRET)を使用する場合は、次のように使用できます。

JavaScript
app.use('/auth/*', (c, next) => {
  const jwtMiddleware = jwt({
    secret: c.env.JWT_SECRET,
  })
  return jwtMiddleware(c, next)
})

オプション

必須 secret: string

秘密鍵の値。

この値が設定されている場合、その値をキーとして使用して Cookie ヘッダーから値が取得され、トークンとして検証されます。

オプション alg: string

検証に使用されるアルゴリズムタイプ。
デフォルトは HS256 です。

使用可能なタイプは HS256 | HS384 | HS512 | RS256 | RS384 | RS512 | PS256 | PS384 | PS512 | ES256 | ES384 | ES512 | EdDSA です。

MITライセンスでリリースされています。