1. 程式人生 > >為站點增加自動登入和單點登入功能

為站點增加自動登入和單點登入功能

一、自動登入功能與實現原理

需求分析
使用者一旦使用瀏覽器登入某個站點和關閉瀏覽器後,在以後兩個星期內,只要使用者啟動該瀏覽器訪問該站點的任何頁面時,都將自動完成登入。
很顯然,該功能要求瀏覽器一旦登入以後的兩個星期內,瀏覽器所在客戶機上必須保留有使用者帳號資訊,並且,瀏覽器在以後設定的時間期限內訪問該站點時,必須自動向伺服器提交保留在客戶機上的使用者帳號資訊。
實現原理
想一想:用什麼樣的Web技術可以實現這樣的功能呢?

這裡寫圖片描述
二、Set-Cookie2響應頭欄位

  • Set-Cookie2頭欄位用於指定WEB伺服器向客戶端傳送的Cookie內容,但是按照Netscape規範實現Cookie功能的WEB伺服器,使用的是Set-Cookie頭欄位,兩者的語法和作用類似。
  • Set-Cookie2頭欄位中設定的cookie內容是具有一定格式的字串,它必須以Cookie的名稱和設定值開頭,格式為“名稱=值”,後面可以加上0個或多個以分號(;)和空格分隔的其它可選屬性,屬性格式一般為“屬性名=值”。
    舉例:Set-Cookie2: user=it315; Version=1; Path=/
  • 除了“名稱=值”對必須位於最前面外,其它的可選屬性的先後順序可以任意。
  • Cookie的名稱只能由普通的英文ASCII字元組成,瀏覽器不用關心和理解Cookie的值部分的意義和格式,只要WEB伺服器能理解值部分的意義就行。
  • 大多數現有的WEB伺服器都是採用某種編碼方式將值部分的內容編碼成可列印的ASCII字元,RFC 2965規範中沒有明確限定編碼方式
  • Set-Cookie2頭欄位中的屬性
    name欄位為一個cookie的名稱。
    value欄位為一個cookie的值。
    domain欄位為可以訪問此cookie的域名。
    path欄位為可以訪問此cookie的頁面路徑
    expires/Max-Age 欄位為此cookie超時時間
    Size欄位 此cookie大小。
    http欄位cookie的httponly屬性。若此屬性為true,則只有在http請求頭中會帶有此cookie的資訊,而不能通過document.cookie來訪問此cookie
    secure 欄位 設定是否只能通過https來傳遞此條cookie

三、自動登入
這裡寫圖片描述
這裡寫圖片描述

增加自動登入的安全性

  • 儲存在瀏覽器所在客戶機上的資訊必須儘可能的安全,即使被人竊取,也無法識別其中的資訊。
  • Cookie值採用如下演算法來生成:
    username + “:” + expiryTime + “:” +
    Md5Hex(username + “:” + expiryTime + “:” + password + “:” + key)
    生成和解析Cookie值的演算法是配對的,最好是放在同一個類中編寫。
    有個開源加密的java類:TokenBasedRememberMeServices.java

相關推薦

站點增加自動登入登入功能

一、自動登入功能與實現原理 需求分析 使用者一旦使用瀏覽器登入某個站點和關閉瀏覽器後,在以後兩個星期內,只要使用者啟動該瀏覽器訪問該站點的任何頁面時,都將自動完成登入。 很顯然,該功

金雅拓推出業界首個針對智慧卡使用者增強的雲訪問管理登入解決方案

SafeNet Trusted Access現在支援智慧卡證書對雲應用的訪問,並將PKI技術引入雲和數字轉型計劃 阿姆斯特丹--(美國商業資訊)--金雅拓今日宣佈推出業界首創的解決方案,讓投資了公鑰基礎設施(PKI)安全應用的組織在向雲遷移時,能在不影響安全性和使用者體驗的情況下利用他們的現

shiro整合redis實現分散式session登入

shiro是一款出色的許可權框架,能夠實現諸如登入校驗、許可權校驗等功能,預設情況下,shir將session儲存到記憶體中,這在應用分散式部署的情況下會出現session不一致的問題,所以我們要將session儲存到第三方,應用始終從第三方獲取session,從而保證分散式

Spring Cloud 安全:整合OAuth2實現身份認證登入

1、概述 Spring Cloud 的安全模組可以為Spring Boot應用提供基於令牌的安全特性。具體講就是支援OAuth2協議來實現單點登入(SSO),可以很方便地在資源服務之間傳遞身份令牌,以及使用嵌入式的ZUUL代理來配置下游服務的認證。 在這篇文

統一使用者認證登入解決方案

■ 康威 李凱 --------------------------------------------------------------------------------  本文以某新聞單位多媒體資料庫系統為例,提出建立企業使用者認證中心,實現基於安全策略的統一使用者

SSO登入退出(跨頂級域名)

在網上搜索了很多資料,都沒有真正解決問題,還得自己想辦法。 單點登入: 當在SSO SERVER端(例:sso.a.com)登入成功後,再次訪問第二域名(例:www.b.com)時,通過調取sso server端的跨域登入,然後跳轉到b網站寫入cookie(這裡使用aja

session共享登入 springboot的實踐思考

我這兩天公司需要一個收銀臺專案,讓我寫,我就直接把以前學的springboot搭建專案用上了,確實很方便,一個小時搭建完成。我就正常使用,沒有問題 但是今天出現一個問題,同事說我需要在你這個專案中獲得

ASP.NET 安全認證(四)——巧妙實現 Form 表認證跨站點、跨伺服器的登入(Single Sign On)

【原創】ASP.NET 安全認證(四) ——巧妙實現 Form 表單認證跨站點、跨伺服器的單點登入(Single Sign On) 作者:寒羽楓(cityhunter172) 第四部分 Form 認證的補充 前三篇在 CSDN 論壇公佈後,效果如同“神仙放屁——果然不同

使用者登入設計 登入 記住密碼等

最近專案使用者登入的要求有所提高,必須單例項登入,要提供記住密碼功能,使用者登入後會有交易所以必須儘可能提高安全性,所以設計了一下使用者登入結構 IP:使用者IP,用於區分使用者登入所在位置 User:使用者名稱(使用者名稱+Id的Hash串),用於識別使用者 Token:使用者口令(MD5離散隨機數),用於

網頁登入以及登入的一些概念

開發web應用,不免要涉及到登入以及許可權等問題,獨立的站點裡,這些也不存在太大的問題,反正教程、程式碼很多的,但是在照抄程式碼的時候,應該還要考慮一下別人為什麼要這樣寫,以後才能自己寫,才能根據不同的需求設計不同的系統。而已經討論的非常多的單點登入,相對就要複雜多了,看了

java web開發一個帳號同一時間只能一個人登入登入

對於一個帳號在同一時間只能一個人登入,可以通過下面的方法實現: 1 .在使用者登入時,把使用者新增到一個ArrayList中 2 .再次登入時檢視ArrayList中有沒有該使用者,如果ArrayList中已經存在該使用者,則阻止其登入 3 .當用戶退出時,需要從該ArrayList中刪除該使用者,這又分為

struts2+spring防止使用者重複登入登入

所有人都知道使用者登入session是一個很好的選擇,而且幾乎都是用的session,但是session是不能跨視窗使用的,每開啟一個瀏覽器,系統會賦予一個新的sessionID,而每個sessionID是不同的,也就是說你每次登入用的都是不同的session,而不是你之

7.登入系統-登入問題-分散式session一致性(即session如何共享)的問題

session的概念什麼是session?  伺服器為每個使用者建立一個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同一個上下文。這樣,當用戶在應用程式的 Web 頁之間跳轉時,儲存在 Session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當用戶請

HttpClientHtmlParser配合實現自動CAS登入系統抽取頁面資訊

httpclient下載地址:http://mirror.bit.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.5.1-bin.zip 專案中引入所有的jar包,然後看下面的

基於springbootredis實現的登入

1、具體的加密和解密方法 package com.example.demo.util; import com.google.common.base.Strings; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder

Spring Security Oauth2 登入案例實現執行流程剖析

線上演示 演示地址:http://139.196.87.48:9002/kitty 使用者名稱:admin 密碼:admin Spring Security Oauth2 OAuth是一個關於授權的開放網路標準,在全世界得到的廣泛的應用,目前是2.0的版本。OAuth2在“客戶端”與“服務提供商”之間

129 會員同一賬號,限制只在同一臺電腦裝置上登入,新登入後原登入自動退出

比如a賬號在a電腦或a瀏覽器上登入後,如果a賬號又在b電腦登入,則a電腦上會自動檢測並退出登入.  思路是點選登入後,把session或時間值儲存在資料庫或txt文字中,並同時儲存在每個使用者的瀏覽器中,如果賬號在另一處登入,則更新資料庫或txt中的sessionid值. 

CAS的登入oauth2的最大區別

oauth2則是保障服務端的使用者資源的安全 CAS客戶端要獲取的最終資訊是,這個使用者到底有沒有許可權訪問我(CAS客戶端)的資源。 oauth2獲取的最終資訊是,我(oauth2服務提供方)的使用者的資源到底能不能讓你(oauth2的客戶端)訪問 CAS的單

Docker 建立 Crowd3.3.2 以及打通 Jira Software7.12.3Confluence6.12.2 SSO 登入

目錄 目錄 1、介紹 1.1、什麼是Crowd? 2、Crowd 的官網在哪裡? 3、如何下載安裝? 4、對 Crowd 進行配置 4.1、破解 Crowd 第一步 4.2、破解 Crowd 第二步,獲取授權許可 4.2、Crowd

登入之CAS原理實現

1.開源單點登入系統CAS入門 1.1 什麼是單點登入 單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 我們目