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