我有一個現有的注冊/登錄系統:用戶輸入電子郵件和密碼。密碼是散列的。我將它存盤在資料庫中。
當用戶登錄時,他們會填寫他們的電子郵件和密碼。密碼經過哈希處理,我在資料庫中查找電子郵件并檢查電子郵件是否匹配。如果是,則他們已登錄。
我想添加一個系統,讓用戶使用 3rd 方 OAuth 登錄,例如 GitHub。我有那個設定,但我不確定要在我的資料庫中存盤什么資料。
我想我將他們的 GitHub 電子郵件作為電子郵件,然后使用他們 GitHub 的訪問令牌作為密碼(所以我會對其進行哈希處理并存盤它。)
我認為這會奏效,但我擔心訪問令牌可能會發生變化,這意味著它們會被鎖定在帳戶之外。
如果我不應該使用訪問令牌作為密碼,我應該使用什么?我需要將用戶的電子郵件存盤在我的資料庫中,但目前需要密碼,如果他們使用 GitHub 登錄,我將無法獲得密碼。
(請注意,當用戶登錄時,我會呼叫我的后端來生成一個訪問令牌 (JWT),我可以使用它來要求他們的用戶詳細資訊,然后將其存盤在本地存盤中。我希望然后能夠執行相同的操作與 GitHub 或其他任何東西。)
uj5u.com熱心網友回復:
oAuth通常用于授權。意思是,您從授權服務器獲取訪問令牌,資源服務器對其進行驗證并讓用戶訪問資料。
在您的情況下,您“并不真正需要”訪問令牌 - 您只想將 oAuth 用于身份驗證。Web 應用程式(如 StackOverflow)這樣做是為了“省去”處理身份驗證流程的麻煩。這意味著,如果我撰寫一個安全的應用程式,我需要以某種方式實作創建帳戶流程、登錄流程、忘記密碼等。當您使用 3rd-party 身份驗證時,您可以省去這個麻煩。
但是,您的應用程式確實需要一些用戶 ID 來執行操作;所以當用戶第一次出現時,你必須在你的應用程式中創建一個用戶 ID。從那時起,您無需擔心密碼過期、忘記密碼甚至登錄。當用戶登錄時,您將獲得訪問令牌,您需要做的就是從中獲取您的應用程式的用戶 ID。
因此,我看不出您需要存盤“密碼”或訪問令牌的原因。
希望這是有道理的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369148.html
標籤:数据库 验证 验证 github-oauth
