@ fastify/ bearer-auth (英语)
@ fastify/ bearer-auth (英语) 提供简单的 Bearer 认证请求钩钩 快捷化 网络框架.
安装
npm i @fastify/bearer-auth
兼容性
| 插件版本 | 快速化版本 |
|---|---|
^10.x | ^5.x |
^8.x | ^4.x |
^5.x | ^3.x |
^4.x | ^2.x |
^1.x | ^1.x |
请注意,如果一个快取版本没有支持,那么该插件的相应版本也一样 上表列出. 见 快速化 LTS 政策 更多细节.
示例
'use strict'
const fastify = require('fastify')()
const bearerAuthPlugin = require('@fastify/bearer-auth')
const keys = new Set(['a-super-secret-key', 'another-super-secret-key'])
fastify.register(bearerAuthPlugin, {keys})
fastify.get('/foo', (req, reply) => {
reply.send({authenticated: true})
})
fastify.listen({port: 8000}, (err) => {
if (err) {
fastify.log.error(err.message)
process.exit(1)
}
fastify.log.info('http://127.0.0.1:8000/foo')
})
API 密码
@ fastify/ bearer-auth (英语) 导出标准 快捷插件。 。 。 . 这样可以将插件在范围化的路径中注册,因此可以保护一些路径 以插件表示,而其他的则不是。 见 快捷化 详细文件和实例.
注册插件时必须指定配置对象 :
keys页:1Set或带有有效类型密钥的数组string(必须)function errorResponse (err) {}: 方法必须同步返回内容正文 发送到客户端( 可选)contentType: 如果要发送的内容是非application/json,然后是contentType属性必须设置( 可选)bearerType: 字符串指定熊鼠字符串(可选)specCompliance数字 : 插件光谱遵守 。 接受一个rfc6749或者说rfc6750。 。 。 . 默认为rfc6750。 。 。 .rfc6749是关于通用的 OAuth2.0 协议,允许符号类型对大小写不敏感rfc6750是关于Bearer Token Usage的,它迫使符号类型是精确匹配的
function auth (key, req) {}: 此函数如果key是一个有效的符号。 它必须回来true被接受或false如果被拒绝。 函数还可以返回一个可以解决 至其中之一值。 如果函数返回或解决到任何其他值、拒绝或丢弃, hTTP 状态500将发送.req是快捷请求对象。 若为auth是一个函数,keys将被忽略。 若为auth不是一个函数或undefined, (中文(简体) ),keys将使用addHook接受布尔,'onRequest',或'preParsing'(可选,默认为)'onRequest':true登记 aonRequest钩子'onRequest'财务报告和审定财务报表'preParsing'登记各自的钩子false将不会注册一个钩子,和fastify.verifyBearerAuth财务报告和审定财务报表fastify.verifyBearerAuthFactory装饰器将被曝光
verifyErrorLogLevel: 指定用于校验错误的日志级的可选字符串. 它必须是由 Fastify 支持的有效日志级别,或者当 注册插件。 默认情况下,此选项将设定为error
默认配置对象为:
{
keys: new Set(),
contentType: undefined,
bearerType: 'Bearer',
specCompliance: 'rfc6750',
errorResponse: (err) => {
return {error: err.message}
},
auth: undefined,
addHook: true
}
插件注册标准快取 请求钩 检查请求
一个 authorization 格式中的页眉 bearer key编辑 key 与
配置内容 keys 使用 a 对象 恒定时间算法
预防 时间攻击如果
authorization 信头缺失、 格式不正确或 key 不验证, 401 个响应
与 {error: message} ,不进行进一步的请求处理.
与 @fastify/auth
此插件可以整合到 @fastify/auth 以此为例:
const fastify = require('fastify')()
const auth = require('@fastify/auth')
const bearerAuthPlugin = require('@fastify/bearer-auth')
const keys = new Set(['a-super-secret-key', 'another-super-secret-key'])
async function server() {
await fastify
.register(auth)
.register(bearerAuthPlugin, { addHook: false, keys, verifyErrorLogLevel: 'debug' })
.decorate('allowAnonymous', function (req, reply, done) {
if (req.headers.authorization) {
return done(Error('not anonymous'))
}
return done()
})
fastify.route({
method: 'GET',
url: '/multiauth',
preHandler: fastify.auth([
fastify.allowAnonymous,
fastify.verifyBearerAuth
]),
handler: function (_, reply) {
reply.send({ hello: 'world' })
}
})
await fastify.listen({port: 8000})
}
server()
通过 { addHook: false } 选项中 verifyBearerAuth 要引用的钩子
done(someError) 而不是立即对错误作出答复(reply.send(someError)) (中文(简体) ). 允许
fastify.auth 继续使用钩子列表中的下一个认证方案.
设置 { verifyErrorLogLevel: 'debug' } 在选项中 @fastify/bearer-auth 发射
全部校验错误日志 debug 级别。 若为 verifyBearerAuth 是名单中最后一个钩子,
fastify.auth 将答复 Unauthorized。 。 。 .
许可证
许可证根据 麻省理工学院。 。 。 .