常用的登入方式

2021-08-19 05:56:59 字數 1805 閱讀 2136

提煉出來整個過程大概就是如下幾步:

首次使用,需要通過郵箱或手機號註冊;

註冊完成後,需要提供使用者名稱和密碼完成登入;

下次再使用,通常不會再次輸入使用者名稱和密碼即可直接進入系統並使用其功能(除非連續長時間未使用);

這一樣一來,即省了使用者註冊的時間,又簡化了你的系統的賬號體系。從而既可以提高使用者註冊率可以節省開發時間,同時,安全性也有了保障。

維基百科對它的解釋摘要如下:

講之前需要了解其中涉及到的幾個角色:

使用者同意授權,應用伺服器重定向到之前設定好的 redirect_uri (應用伺服器所在的位址),並附帶上授權碼(code);

早期網際網路以 web 為主,客戶端是瀏覽器,所以 cookie-session 方式最那時候最常用的方式,直到現在,一些 web **依然用這種方式做認證。

認證過程大致如下:

使用者輸入使用者名稱、密碼或者用簡訊驗證碼方式登入系統;

服務端驗證後,建立乙個 session 資訊,並且將 sessionid 存到 cookie,傳送回瀏覽器;

下次客戶端再發起請求,自動帶上 cookie 資訊,服務端通過 cookie 獲取 session 資訊進行校驗;

弊端即使能在 web 場景下使用,也要考慮跨域問題,因為 cookie 不能跨域;

cookie 存在 csrf(跨站請求偽造)的風險;

如果是分布式服務,需要考慮 session 同步問題;

由於傳統的 cookie-session 認證存在諸多問題,可以把上面的方案改造一下。改動的地方如下:

服務端也不存 session 了,把 session 資訊拿出來存到 redis 等記憶體資料庫中,這樣即提高了速度,又避免了 session 同步問題;

經過改造之後變成了如下的認證過程:

使用者輸入使用者名稱、密碼或者用簡訊驗證碼方式登入系統;

服務端經過驗證,將認證資訊構造好的資料結構儲存到 redis 中,並將 key 值返回給客戶端;

客戶端拿到返回的 key,儲存到 local storage 或本地資料庫;

下次客戶端再次請求,把 key 值附加到 header 或者 請求體中;

服務端根據獲取的 key,到 redis 中獲取認證資訊;

上面的方案雖然經過了改版,但還是需要客戶端和伺服器端維持乙個狀態資訊,比如用 cookie 換 session ,或者用 key 換 redis 的 value 資訊,基於 jwt 的 token 認證方案可以省去這個過程。

json web token(jwt)是乙個非常輕巧的規範。這個規範允許我們使用jwt在使用者和伺服器之間傳遞安全可靠的資訊。

認證過程

依然是使用者登入系統;

服務端驗證,將認證資訊通過指定的演算法(例如hs256)進行加密,例如對使用者名稱和使用者所屬角色進行加密,加密私鑰是儲存在伺服器端的,將加密後的結果傳送給客戶端,加密的字串格式為三個"." 分隔的字串 token,分別對應頭部、載荷與簽名,頭部和載荷都可以通過 base64 解碼出來,簽名部分不可以;

客戶端拿到返回的 token,儲存到 local storage 或本地資料庫;

下次客戶端再次發起請求,將 token 附加到 header 中;

服務端獲取 header 中的 token ,通過相同的演算法對 token 中的使用者名稱和所屬角色進行相同的加密驗證,如果驗證結果相同,則說明這個請求是正常的,沒有被篡改。這個過程可以完全不涉及到查詢 redis 或其他儲存;

優點綜上所述,jwt 可以作為首選的認證方案。當然,具體的情況具體分析,還要看是不是適合真實的應用場景。除了上述的這些,涉及到資訊保安的,建議全部採用 https 方式部署,採用 https 方式,資訊很難被嗅探破解,對應用的安全性很重要。

sqlplus常用的幾種登入方式

1.sqlplus as sysdba 作業系統認證,sys管理員登入,後面要有空格。2.sqlplus as sysdba 作業系統認證,sys管理員登入,後面有無空格都可,為方便記憶,本文統一為有空格。3.sqlplus username pwd tnsname host port servic...

sqlplus常用的幾種登入方式

1.sqlplus as sysdba 作業系統認證,sys管理員登入,後面要有空格。2.sqlplus as sysdba 作業系統認證,sys管理員登入,後面有無空格都可,為方便記憶,本文統一為有空格。3.sqlplus username pwd tnsname host port servic...

AWS的登入方式

跟著官方的操作指南走即可!二 使用使用者名稱和密碼登入 1.設定 root 密碼 sudo passwd root 2.切換到root使用者 su root 3.進入 etc ssh 執行 chmod 777 sshd config 修改檔案屬性,然後開啟sshd config 將 permitro...