1、總述
2、環境配置
[3、業務servers管理]
[4、用戶信息同步]
[5、token的攔截、生成、驗證(服務端)]
[6、概念辨析:session、cookie、token的區別與token存儲]
[7、token的分享(瀏覽器端)]
[8、安全性措施]
[9、用戶體驗]
[10、性能]php
你已經知道什麼是SSO了html
瞭解域名解析流程與hosts文件的做用前端
知道nginx代理的使用java
會啓動一個web應用(python、java-web、php、node.js等等)node
本系列着重於SSO的實現,涉及到的技術主要以推薦閱讀呈現。若是你不懂前提提到的點,可粗略瀏覽本文後去學習下技術細節再回頭看,千萬不要似動非懂的。另外聲明,本實戰是用node.js + express4.x實現的。python
咱們約定以下幾個域名:nginx
id.vhost.com sso系統 負責驗證登陸、註冊、修改公共用戶信息git
music.vhost.com 音樂應用 (同域)web
note.com 日記應用(跨域)express
添加以下內容:
127.0.0.1 id.vhost.com 127.0.0.1 music.vhost.com 127.0.0.1 note.com
咱們約定這三個server在127.0.0.1上的端口
id.vhost.com --> 127.0.0.1:3000
music.vhost.com --> 127.0.0.1:3001
note.com --> 127.0.0.1:3002
這裏放一個參考配置代碼,文件id.vhost.com.conf:
1 server { 2 listen 80; 3 server_name id.vhost.com; 4 charset utf-8; 5 access_log /var/log/nginx/id.vhost.com.log main; 6 location / { 7 proxy_set_header X-Real-IP $remote_addr; 8 proxy_set_header X-Forwarded-For $proxy_add_x_forwarde d_for; 9 proxy_set_header Host $http_host; 10 proxy_set_header X-NginX-Proxy true; 11 12 proxy_pass http://127.0.0.1:3000; 13 } 14 }
其他兩個自行配置
使用Express Generator來生成項目
express -e --git id // 咱們使用ejs前端模板,同時添加.gitignore文件 express -e --git music express -e --git note
這樣項目就生成完畢了!接下來修改啓動端口。修改每一個項目的bin/www文件中的端口設置。分別爲3000、300一、3002(上面已經說了)
var port = normalizePort(process.env.PORT || '3000');
而後分別啓動三個項目、以及nginx。在瀏覽器中訪問id.vhost.com、music.vhost.com、note.vhost.com。 若是都成功,配置就完成了!這樣,咱們就在本地模擬出了跨域。
請支出錯誤之處、不足須要補充之處好讓我進行修改!
大膽說出你的疑問!