摘要:最近做项目,遇到单点登录,方法是在前端做代理。调通之后开始思考如何在本地开发环境调试单点登录这一功能。
最近做项目,遇到单点登录,方法是在前端做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页面
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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
阅读 1369·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