pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 node.js 中更改密碼和注銷時使 JWT 無效的最佳實

Best practices to invalidate JWT while changing passwords and logout in node.js?(在 node.js 中更改密碼和注銷時使 JWT 無效的最佳實踐?)
本文介紹了在 node.js 中更改密碼和注銷時使 JWT 無效的最佳實踐?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我想知道在更改密碼/注銷時使 JWT 無效而不敲擊 db 的最佳做法.

I would like to know the best practices to invalidate JWT without hitting db while changing password/logout.

我有以下想法通過訪問用戶數據庫來處理上述兩種情況.

I have the idea below to handle above 2 cases by hitting the user database.

1.如果密碼更改,我檢查存儲在用戶數據庫中的密碼(散列).

1.Incase of password changes, I check for password(hashed) stored in the user db.

2.在注銷的情況下,我將上次注銷時間保存在用戶數據庫中,因此通過比較令牌創建時間和注銷時間,我可以使這種情況無效.

2.Incase of logout, I save last-logout time in user db, hence by comparing the token created time and logout time, I can able to invalidate this case.

但這兩種情況的代價是每次用戶點擊 api 時都會點擊用戶 db.任何最佳做法都會受到贊賞.

But these 2 cases comes at the cost of hitting user db everytime when the user hits the api. Any best practise is appreciated.

更新:我認為我們不能在不點擊 db 的情況下使 JWT 無效.所以我想出了一個解決方案.我已經發布了我的答案,如果您有任何疑問,歡迎您.

UPDATE: I dont think we can able to invalidate JWT without hitting db. So I came up with a solution. I have posted my answer, if you have any concern, you are welcome.

推薦答案

不使用刷新令牌時:

1.修改密碼時:用戶修改密碼時,注意用戶db中修改密碼的時間,所以當修改密碼時間大于token創建時間時,則token為無效.因此,剩余的會話將很快被注銷.

1.While changing password: when the user changes his password, note the change password time in the user db, so when the change password time is greater than the token creation time, then token is not valid. Hence the remaining session will get logged out soon.

2.當用戶注銷時: 當用戶注銷時,將令牌保存在單獨的數據庫中(例如:InvalidTokenDB 并在令牌過期時從數據庫中刪除令牌).因此,用戶從各自的設備上注銷,他在其他設備上的會話不受干擾.

2.When User logs out: When the user logs out, save the token in a seperate DB (say: InvalidTokenDB and remove the token from Db when token expires). Hence user logs out from the respective device, his sessions in other device left undisturbed.

因此,在使 JWT 無效時,我遵循以下步驟:

Hence while invalidating a JWT, I follow the below steps:

  1. 檢查令牌是否有效.
  2. 如果有效,請檢查它是否存在于 invalidTokenDB(已注銷的令牌存儲到其到期時間的數據庫)中.
  3. 如果不存在,則檢查用戶 db 中的令牌創建時間和更改密碼時間.
  4. 如果更改密碼時間
  5. 令牌創建時間,則令牌有效.

關注上述方法:

  1. 對于每個 api 請求,我都需要按照上述所有步驟操作,這可能會影響性能.

使用刷新令牌時:訪問令牌有效期為1天,刷新令牌為終身有效

When Refresh token is used: with expiry of access token as 1 day, refresh token as lifetime validity

1.修改密碼時: 當用戶修改密碼時,修改用戶的刷新令牌.因此,剩余的會話將很快被注銷.

1. While changing password: When the user changes his password, change the refresh token of the user. Hence the remaining session will get logged out soon.

<強>2.當用戶注銷時:當用戶注銷時,將令牌保存在單獨的數據庫中(例如:InvalidTokenDB 并在令牌過期時從數據庫中刪除令牌).因此,用戶從各自的設備上注銷,他在其他設備上的會話不受干擾.

2. When User logs out: When the user logs out, save the token in a seperate DB (say: InvalidTokenDB and remove the token from Db when token expires). Hence user logs out from the respective device, his sessions in other device left undisturbed.

因此,在使 JWT 無效時,我遵循以下步驟:

Hence while invalidating a JWT, I follow the below steps:

  1. 檢查令牌是否有效
  2. 如果有效,檢查令牌是否存在于 InvalidTokenDB 中.
  3. 如果不存在,請使用 userDB 中的刷新令牌檢查刷新令牌.
  4. 如果等于,那么它是一個有效的令牌

關注上述方法:

  1. 對于每個 api 請求,我都需要按照上述所有步驟操作,這可能會影響性能.
  2. 如何使刷新令牌無效,因為刷新令牌沒有有效性,如果被黑客使用,仍然認證有效,請求將始終成功.

注意:盡管 Hanz 在 Using Refesh Token in Token-based Authentication is secure? ,我聽不懂他在說什么.任何幫助表示贊賞.

Note: Although Hanz suggested a way to secure refresh token in Using Refesh Token in Token-based Authentication is secured? , I couldn't able to understand what he is saying. Any help is appreciated.

所以如果有人有好的建議,歡迎您的意見.

So If anyone have nice suggestion, your comments are welcome.

更新:我正在添加答案,以防您的應用程序不需要具有生命周期到期的刷新令牌.此答案由 Sudhanshu (https://stackoverflow.com/users/4062630/sudhanshu-高爾).謝謝蘇丹舒.所以我相信這是最好的方法,

UPDATE: I am adding the answer incase your app needs no refresh token with lifetime expiry. This answer was given by Sudhanshu (https://stackoverflow.com/users/4062630/sudhanshu-gaur). Thanks Sudhanshu. So I believe this is the best way to do this,

當不需要刷新令牌且訪問令牌沒有過期時:

當用戶登錄時,在他的用戶數據庫中創建一個沒有過期時間的登錄令牌.

when user login, create a login token in his user database with no expiry time.

因此,在使 JWT 無效時,請按照以下步驟操作,

Hence while invalidating a JWT, follow the below steps,

  1. 檢索用戶信息并檢查令牌是否在他的用戶數據庫中.如果允許.
  2. 當用戶注銷時,僅從他的用戶數據庫中刪除此令牌.
  3. 當用戶更改密碼時,從他的用戶數據庫中刪除所有令牌并要求他再次登錄.

因此,使用這種方法,您不需要在數據庫中存儲注銷令牌直到它們過期,也不需要在更改上述情況下需要的密碼時存儲令牌創建時間.但是,我相信這種方法僅在您的應用具有不需要刷新令牌且令牌沒有到期的要求時才有效.

So with this approach, you don't need to store neither logout tokens in database until their expiry nor storing token creation time while changing password which was needed in the above cases. However I believe this approach only valids if your app has requirements with no refresh token needed and no expiry of the tokens.

如果有人對這種方法有疑慮,請告訴我.歡迎您的意見:)

If anyone has concern with this approach, please let me know. Your comments are welcome :)

這篇關于在 node.js 中更改密碼和注銷時使 JWT 無效的最佳實踐?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Is Math.random() cryptographically secure?(Math.random() 在密碼學上是安全的嗎?)
Secure random numbers in javascript?(在javascript中保護隨機數?)
How to avoid multiple token refresh requests when making simultaneous API requests with an expired token(使用過期令牌發出同時 API 請求時如何避免多個令牌刷新請求)
JWT not decoding quot;JWT malformedquot; - Node Angular(JWT 未解碼“JWT malformed;- 節點角度)
How to invalidate a JWT token with no expiry time(如何使沒有到期時間的 JWT 令牌無效)
Authorization header in img src link(img src 鏈接中的授權標頭)
主站蜘蛛池模板: 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂| 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 |