🔥

HonoのmiddlewareでAPI-KEYを使った認証を行う

2024/01/03に公開

これはAWS Lambdaのテンプレートを使って作成したアプリケーション内での実装です。

Honoではmiddlewareを設定することができ、'*'を指定することで全てのリクエストに対して同様の処理を行う設定ができます。

以下のようにすることで、リクエストのヘッダーに正しいX-API-KEYが設定されていないリクエストは全てForbiddenとすることができます。

npm run devで動かせるようにlambda/index.tsからsrc/index.tsに移して使ってます。

// 省略
"dev": "bun run --hot src/index.ts"
// 省略
src/index.ts
import { Hono } from 'hono'
import { HTTPException } from 'hono/http-exception'

const API_KEY = process.env.API_KEY!
const app = new Hono()

app.use('*', async (c, next) => {
  const apiKey = c.req.header('X-API-KEY')
  if (apiKey !== API_KEY) {
    throw new HTTPException(403, { message: 'Forbidden' })
  }
  await next()
})

app.get('/', async (c) => {
  // 認証が通った後の処理
})

export default app

lambda/index.tsは以下のようになってます。

lambda/index.ts
import { handle } from 'hono/aws-lambda'
import app from '../src'

export const handler = handle(app)
shinaps テックブログ

Discussion