JWT的sub
声明是可选的,但featherjs-authentication不允许我将其设置为空字符串或删除它。
我能够在authentication
之前的hook
中为有效负载添加新值,但更改sub
或尝试删除它不起作用。
app.service('/api/auth').hooks({
before: {
create: [
// You can chain multiple strategies
auth.hooks.authenticate(['jwt', 'local']),
hook => {
// I can add a new `SUB` value but this method doesn't work for `sub`
Object.assign(hook.params.payload, {SUB: hook.params.payload.userId})
}
],
...
我尝试将相同的更改添加到after
挂钩,但这也没有用。将sub
值设为anonymous
对我来说似乎并不合适。他们的文档甚至说:
subject: 'anonymous', // Typically the entity id associated with the JWT
然而,似乎没有一种直截了当的方法使sub
JWT声称具有动态价值。
答案 0 :(得分:2)
subject
或sub
在authentication options中设置,并且 - 与任何其他JWT特定选项一样 - 无法通过有效负载进行设置。
Looking at the code您可以看到valid JWT option keys可以通过params
设置(params.query
以外的设置不在恶意客户端范围之内,因此无法轻易篡改用):
app.service('/api/auth').hooks({
before: {
create: [
// You can chain multiple strategies
auth.hooks.authenticate(['jwt', 'local']),
hook => {
hook.params.jwt.subject = hook.params.payload.userId;
}
],