Skip to content

JWK 认证中间件

JWK 认证中间件通过使用 JWK (JSON Web Key) 验证令牌来认证请求。 它会检查 Authorization 请求头以及其他配置的来源,例如 cookies(如果指定)。 具体来说,它使用提供的 keys 验证令牌,如果指定了 jwks_uri,则从 jwks_uri 获取 keys,如果设置了 cookie 选项,则支持从 cookies 中提取令牌。

INFO

从客户端发送的 Authorization 请求头必须指定 scheme。

示例:Bearer my.token.valueBasic 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('You are authorized') // 你已获得授权
})

获取 payload:

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) // eg: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
})

选项

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

您的公钥的值,或返回公钥值的函数。

可选 jwks_uri: string

如果设置此值,则尝试从此 URI 获取 JWKs,期望得到一个包含 keys 的 JSON 响应,这些 keys 将被添加到提供的 keys 选项中。

如果设置此值,则会使用该值作为键从 cookie 请求头中检索值,然后将其作为令牌进行验证。

在 MIT 许可证下发布。