摘要:最近做項目,遇到單點登錄,方法是在前端做代理。調(diào)通之后開始思考如何在本地開發(fā)環(huán)境調(diào)試單點登錄這一功能。
最近做項目,遇到單點登錄,方法是在前端做nginx代理。
應用系統(tǒng)需要配合做如下調(diào)整:
1、使用“*.頂級域名”訪問,確??梢院蚄AM共享cookie
2、對來自Nginx代理的訪問放開登錄認證(安全起見,對來自其他IP的訪問應該禁止)
3、應用系統(tǒng)從請求頭kam_remote_user中讀取登錄用戶(Nginx會將登錄用戶寫入請求頭)
4、如果應用系統(tǒng)需要KAM的全局唯一token,可以從cookie中讀取kam_sso_token的值
剛開始調(diào)試的時候是在正式環(huán)境,每次修改完代碼需要重新構(gòu)建才能看到效果,
實在繁瑣,還產(chǎn)生了一堆不必要的commit 歷史。調(diào)通之后開始思考如何在本地開發(fā)環(huán)境調(diào)試單點登錄這一功能。
不辱使命,研究出來了,以下是步驟。
location / { root /usr/share/nginx/html; auth_request /kam_auth; error_page 401 = @error401; auth_request_set $kam_remote_url $upstream_http_kam_remote_url; proxy_set_header kam_remote_user $upstream_http_kam_remote_user; } location /kam_auth { internal; proxy_set_header kam_remote_url "$scheme://$http_host$request_uri"; proxy_set_header Host $host; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_pass 單點登錄頁面網(wǎng)址/auth; } location @error401 { add_header Set-Cookie "NSREDIRECT=$kam_remote_url;Path=/;Domain=頂級域名"; return 302 單點登錄頁面網(wǎng)址; }
配置完后發(fā)布到正式環(huán)境,單點登錄功能已可用
繼續(xù)配置,我們的目標是 dev 環(huán)境也能單點登錄!
2、虛擬域名修改hosts文件 C:WindowsSystem32driversetc
加入 127.0.0.1 dev.testgroup.com
之后,把原來的dev運行地址 http://localhost:8080 換成 http://dev.testgroup.com:8080
發(fā)現(xiàn)報錯 Invalid Host header
解決方法:在webpack.dev.conf.js devServer對象中添加:disableHostCheck: true
devServer: { ... disableHostCheck: true },
重新 run dev 后發(fā)現(xiàn)可以訪問了
3、下載 nginxnginx官網(wǎng)上下載相應的安裝包
下載進行解壓,將解壓后的文件放到自己心儀的目錄下。window的cmd窗口,進入到nginx目錄,
使用 start nginx.exe 進行nginx的安裝,如下圖所示
安裝成功,后在瀏覽器地址欄輸入:127.0.0.1,會看到如下圖所示的nginx歡迎界面
如果看不到,那么說明你安裝失敗,你可以到你的 nginx 目錄下的logs文件夾下的error下查看,
如果發(fā)現(xiàn)里面寫著:
說明你的80端口被占用了,或是cmd命令進入dos下執(zhí)行:netstat -aon | findstr :80 查看80端口是否被占用,如果占用,那么你需要修改注冊表,如下步驟:
1、打開注冊表:regedit
2、找到:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTP
3、找到一個REG_DWORD類型的項Start,將其改為0
4、重啟系統(tǒng),System進程不會占用80端口
此時此刻,你可以再次執(zhí)行 相應的命令:start nginx.exe 命令了。
nginx相關(guān)命令:
start nginx.exe
nginx.exe -s stop //停止nginx
nginx.exe -s reload //重新加載nginx
nginx.exe -s quit //退出nginx
因為我們已經(jīng)配置了虛擬域名,所以在瀏覽器地址欄輸入 http://dev.testgroup.com 也是同樣的 nginx welcome 頁面
3、配置本地 nginx 文件修改 nginx 目錄下的 conf/nginx.conf 文件
location / { root html; index index.html index.htm; auth_request /kam_auth; error_page 401 = @error401; auth_request_set $kam_remote_url $upstream_http_kam_remote_url; proxy_set_header kam_remote_user $upstream_http_kam_remote_user; proxy_pass http://dev.testgroup.com:8080; } location /kam_auth { internal; proxy_set_header kam_remote_url "$scheme://$http_host$request_uri"; proxy_set_header Host $host; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_pass 單點登錄頁面網(wǎng)址/auth; } location @error401 { add_header Set-Cookie "NSREDIRECT=$kam_remote_url;Path=/;Domain=頂級域名"; return 302 單點登錄頁面網(wǎng)址; }
現(xiàn)在,在瀏覽器地址欄輸入 http://dev.testgroup.com 發(fā)現(xiàn)自動跳轉(zhuǎn)到了單點登錄頁面,
登錄后返回到了我們之前的dev.testgroup.com頁面
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40205.html
摘要:極大地降低了平臺的復雜度,更加方便企業(yè)開發(fā)人員實現(xiàn)各種業(yè)務應用,幫助企業(yè)輕松打造基于云計算的軟件基礎設施。本文將從實際案例出發(fā),結(jié)合不同的使用場景,為各位介紹的這些特性。是未來數(shù)據(jù)中心操作系統(tǒng)的核心。 0.前言 隨著 Docker 技術(shù)的日漸火熱,本就火爆的云計算行業(yè)進入了一個加速階段。云計算最大的特點是彈性和靈活,幫助企業(yè)應對復雜的業(yè)務需求。由于云計算的IT構(gòu)架和上一代的IT構(gòu)架有很...
摘要:本文同步在個人博客上,歡迎關(guān)注這篇文章整理了在前端開發(fā)中,在開發(fā)環(huán)境下使用重寫及代理功能的方法。表示該規(guī)則是使用正則定義的,區(qū)分大小寫。因此牢記在上下文中使用,而在上下文中使用。 本文同步在個人博客shymean.com上,歡迎關(guān)注 這篇文章整理了在前端開發(fā)中,在開發(fā)環(huán)境下使用nginx重寫uri及代理功能的方法。 參考 nginx中文文檔 前端開發(fā)者必備的 Nginx 知識 Ngin...
摘要:傳給微信的參數(shù)進行轉(zhuǎn)義其中參數(shù)是可以被微信原樣返回,這樣就可以按你自己的需求完成反向代理了??梢匀サ舸罱y試環(huán)境另一條運維的原則是不要在生產(chǎn)環(huán)境上直接改,在測試環(huán)境修改并經(jīng)過測試,測試通過后,再上傳到生產(chǎn)環(huán)境。 前言 在與第三方系統(tǒng)進行接口開發(fā)時,需要不斷的改進和測試,以常見的微信登錄支付和 Alipay 支付和登錄為例. 相對來講 Alipay 做起來容易一些, 一是接口 SDK 封...
閱讀 1514·2021-10-11 10:59
閱讀 1887·2021-09-09 11:36
閱讀 1402·2019-08-30 15:55
閱讀 1332·2019-08-29 11:20
閱讀 3067·2019-08-26 13:39
閱讀 1472·2019-08-26 13:37
閱讀 1966·2019-08-26 12:11
閱讀 1328·2019-08-23 14:28