Bearer Auth ミドルウェア
Bearer Auth ミドルウェアは、リクエストヘッダーの API トークンを検証して認証を行います。 エンドポイントにアクセスする HTTP クライアントは、Authorization ヘッダーに Bearer {token} を設定します。
ターミナルで curl を使うと、次のようになります。
curl -H 'Authorization: Bearer honoiscool' http://localhost:8787/auth/pageインポート
import { Hono } from 'hono'
import { bearerAuth } from 'hono/bearer-auth'使い方
NOTE
token は正規表現 /[A-Za-z0-9._~+/-]+=*/ に一致する必要があり、そうでなければ 400 エラーを返します。この正規表現は、URL セーフな Base64 と標準 Base64 でエンコードされた JWT の両方に対応します。このミドルウェアは bearer トークンが JWT であることを要求せず、上記の正規表現に一致することだけを要求します。
const app = new Hono()
const token = 'honoiscool'
app.use('/api/*', bearerAuth({ token }))
app.get('/api/page', (c) => {
return c.json({ message: 'You are authorized' })
})特定のルートとメソッドだけを制限するには:
const app = new Hono()
const token = 'honoiscool'
app.get('/api/page', (c) => {
return c.json({ message: 'Read posts' })
})
app.post('/api/page', bearerAuth({ token }), (c) => {
return c.json({ message: 'Created post!' }, 201)
})複数のトークンを使う場合(たとえば、有効なトークンはすべて読み取り可能で、作成、更新、削除には特権トークンが必要な場合):
const app = new Hono()
const readToken = 'read'
const privilegedToken = 'read+write'
const privilegedMethods = ['POST', 'PUT', 'PATCH', 'DELETE']
app.on('GET', '/api/page/*', async (c, next) => {
// List of valid tokens
const bearer = bearerAuth({ token: [readToken, privilegedToken] })
return bearer(c, next)
})
app.on(privilegedMethods, '/api/page/*', async (c, next) => {
// Single valid privileged token
const bearer = bearerAuth({ token: privilegedToken })
return bearer(c, next)
})
// Define handlers for GET, POST, etc.自分でトークンの値を検証するには、verifyToken オプションを指定します。true を返すと認証を許可します。
const app = new Hono()
app.use(
'/auth-verify-token/*',
bearerAuth({
verifyToken: async (token, c) => {
return token === 'dynamic-token'
},
})
)オプション
required token: string | string[]
受信した bearer トークンを照合する文字列。
optional realm: string
返される WWW-Authenticate チャレンジヘッダーに含める認証領域の名前。デフォルトは "" です。 詳細:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate#directives
optional prefix: string
Authorization ヘッダー値のプレフィックス(schema とも呼びます)。デフォルトは "Bearer" です。
optional headerName: string
ヘッダー名。デフォルトは Authorization です。
optional hashFunction: Function
認証トークンを安全に比較するためのハッシュ処理関数。
optional verifyToken: (token: string, c: Context) => boolean | Promise<boolean>
トークンを検証する関数。
optional noAuthenticationHeader: object
認証ヘッダーがない場合のエラーレスポンスをカスタマイズします。
wwwAuthenticateHeader:string | object | MessageFunction- WWW-Authenticate ヘッダー値をカスタマイズします。message:string | object | MessageFunction- レスポンスボディのカスタムメッセージ。
MessageFunction は (c: Context) => string | object | Promise<string | object> です。
optional invalidAuthenticationHeader: object
認証ヘッダーの形式が無効な場合のエラーレスポンスをカスタマイズします。
wwwAuthenticateHeader:string | object | MessageFunction- WWW-Authenticate ヘッダー値をカスタマイズします。message:string | object | MessageFunction- レスポンスボディのカスタムメッセージ。
optional invalidToken: object
トークンが無効な場合のエラーレスポンスをカスタマイズします。
wwwAuthenticateHeader:string | object | MessageFunction- WWW-Authenticate ヘッダー値をカスタマイズします。message:string | object | MessageFunction- レスポンスボディのカスタムメッセージ。