每日签到
奶昔超市
积分商城
奶昔访达
添加到桌面
收藏本站
切换到宽版
板块
NaixiBBS
扩展
Fun
登录
注册
奶昔论坛
»
板块
›
内容区
›
技术
›
借助Casdoor+OAuth2-Proxy实现类Cloudflare Access功能 ...
返回列表
发布新帖
查看:
354
|
回复:
2
[运维]
借助Casdoor+OAuth2-Proxy实现类Cloudflare Access功能(宝塔面板)
nyarime
nyarime
当前离线
积分
6212
雷达卡
发表于 2025-12-6 05:12:13
|
查看全部
|
阅读模式
登录后免广告,享受更多奶昔会员权益!
您需要
登录
才可以下载或查看,没有账号?
注册
×
其实可以直接套Cloudflare Access(现在
合并到Zero Trust功能
了),Cloudflare Access 的作用是在无需传统VPN 的情况下可保护内部应用和资源,然而奶油在奶昔SSO点那个Cloudflare后注册量达到100用户后就爆了。好嘛,那就自己搓一个类似于Cloudflare Access的功能,即在Nginx层面给任意项目站点增加访问限制,也就是推出奶油专属的服务。
这个在
nmQu实现过
,只不过Any-Proxy是基于PHP的因此引入一个OIDC鉴权就行。不管老牌KeyCloak以及奶昔SSO用的Casdoor,总之都是以OIDC标准实现的。因此我们需要用到OAuth2-Proxy完成鉴权,并告知NGINX这个是符合资格的用户。不过这个方法也有缺点,除非你是ALL IN BOOM否则你得弄一堆OAuth2-Proxy,不知道为啥写公网地址会500错误。
确认你的NGINX具备auth_request
终端执行nginx -V看到--with-http_auth_request_module就是有,宝塔用户默认都没有。因此需要卸载NGINX(重装会保留配置)再选择编译安装,然后添加自定义选装模块如下图,添加自定义模板参数写
--with-http_auth_request_module
,模块名随意填写(如auth_request)
重装完后到终端执行nginx -V,就发现已经有了。那就可以在宝塔面板上创建了你的网站
部署OAuth2-Proxy对接Casdoor
假设你已经有了IdP(奶昔SSO)后,并已经创建了网站。在确保能访问的情况下,我们先搓一下OAuth2-Proxy。
这里我用 o2p.naixi.net 作为域名,确保访问
https://o2p.naixi.net
可以正常打开后再来添加反代。使用宝塔默认的反向代理,以本帖为例我绑定的是4180端口就写127.0.0.1:4180,其他默认就好
要使用OAuth2-Proxy首先需要写下配置文件。这边参考
官方文档
直接用二进制,我在
别人的博客
看到了密密麻麻的启动参数,还以为我在docker run。不过以
官方OIDC的案例
是可以用一个文本写配置的。我把它叫naixi.cfg,先在奶昔SSO(Casdoor)上创建好应用,然后参考如下内容写配置:
#OAuth2-Proxy开在4180端口,为了避免暴露公网用127.0.0.1
http_address="127.0.0.1:4180"
# 表示 Oauth2-Proxy 运行在反向代理之后,使用 X-Real-IP 头,并允许X-Forwarded-{Proto,Host,Uri}在重定向选择上使用
reverse_proxy=true
# 使用 openssl rand -base64 16 生成
cookie_secret="NYARIMEYesIArkAreYouOK=="
# Cookies 限定域
cookie_domains=".naixi.net"
# 配置Provider为OIDC类型
provider="oidc"
# 配置Provider名称
provider_display_name="Naixi SSO"
client_id="应用id"
client_secret="应用私钥"
# Casdoor授权完成后的回调地址
# /oauth2/callback 是 oauth2-proxy 提供的接口
redirect_url="https://o2p.naixi.net/oauth2/callback"
# Casdoor地址
oidc_issuer_url="https://auth.naixi.net"
# 域名白名单(可选)
whitelist_domains=".naixi.net"
# 限定邮箱后缀
email_domains=["*"]
复制代码
保存后可以在终端执行
oauth2-proxy --config naixi.cfg
复制代码
启动后再次访问
https://o2p.naixi.net
显示OAuth2-Proxy则表示启动成功
接下来先Ctrl+C关掉,然后再用宝塔的进程守护管理器保持就行(screen也行,但这个可以开机自启动)
启动好后保险起见,还可以再访问下
https://o2p.naixi.net
,能打开就表示OAuth2-Proxy搞定。然后再点一下,试试可否顺利加载Casdoor的登录框,若有回调错误可按照报错的URI加入Casdoor应用的Redirect URI。以本帖为例,添加的是
https://o2p.naixi.net/oauth2/callback
登录后若凭据在有效期内,将显示404。因此建议用无痕浏览器调试!
为网站启用OAuth2-Proxy验证
以 search.naixi.net (最近在玩的SearXNG)为例,由于自建搜索引擎会有违规内容导致被墙的风险,因此只对奶油开放。首先打开网站详情,然后选择配置文件,启用auth_request
auth_request /oauth2/auth;
error_page 401 = https://o2p.naixi.net/oauth2/sign_in?rd=$scheme://$host$request_uri;
复制代码
接着创建一个反向代理,这里创建一个占位就行。由于SearXNG是用Docker部署的,因此我已经反代过8180端口,这里不用管它。
创建好后点配置文件,然后删掉那些。输入下面的代码:
#PROXY-START/
location ^~ /oauth2/ {
proxy_pass http://127.0.0.1:4180; # Change this to the "--http-address" configured in step II.6
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Auth-Request-Redirect $request_uri;
# or, if you are handling multiple domains:
# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
}
location = /oauth2/auth {
proxy_pass http://127.0.0.1:4180; # Change this to the "--http-address" configured in step II.6
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Length "";
proxy_pass_request_body off;
}
location ^~ /
{
proxy_pass http://127.0.0.1:8180;# Change this to your app's url
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_filefp9pXqS2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filefp9pXqS2 1;
expires 1m;
}
if ( $static_filefp9pXqS2 = 0 )
{
add_header Cache-Control no-cache;
}
}
#PROXY-END/
复制代码
如果网站不是Docker部署的,那就把
location ^~ /
开始到
#PROXY-END/
之前的删完即可,删完后如下:
#PROXY-START/
location ^~ /oauth2/ {
proxy_pass http://127.0.0.1:4180; # Change this to the "--http-address" configured in step II.6
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Auth-Request-Redirect $request_uri;
# or, if you are handling multiple domains:
# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
}
location = /oauth2/auth {
proxy_pass http://127.0.0.1:4180; # Change this to the "--http-address" configured in step II.6
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Length "";
proxy_pass_request_body off;
}
#PROXY-END/
复制代码
上面的#PROXY-START/和#PROXY-END/是宝塔面板用于读取反代规则所引用的限定头尾,这个需要保留。
此时访问您的用户在登录您的服务时会经历以下过程:在浏览器中打开 URL -> 仅看到需要登录的页面,包括名为“使用 Naixi SSO 登录”的按钮 -> 单击按钮并被重定向到您的 Casdoor 地址,他们将被要求登录 -> 用户输入他们的用户名和密码,Casdoor 验证他们的凭据 -> 自动重定向回您的 URL -> 成功访问您的服务 -> 用户在以下情况下将被要求再次登录您设置的时间将过期。
爱生活,爱奶昔~
回复
使用道具
举报
照妖镜
Clutter
Clutter
当前离线
积分
1547
雷达卡
发表于 2025-12-6 05:54:43
来自手机
|
查看全部
辛苦
爱生活,爱奶昔~
回复
使用道具
举报
照妖镜
tomcruise
tomcruise
当前离线
积分
7677
雷达卡
发表于 2025-12-6 13:48:24
|
查看全部
技术帖,学习了。感谢
爱生活,爱奶昔~
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
茶馆
人工智能
云计算
通信
交易
科技
金融
相关网站
9eSIM
eSTKme
eSIM.GG
RedteaGO
蚊子玩卡
站内导航
RSS
Sitemap
CDK
SSO
更多...
站务支持
用户认证制度
User Verification System
获取邀请码
广告招商
联系支持
卡粉专属群
加入官方群
© 2026
Naixi Networks
.
沪ICP备13020230号-1
|
沪公网安备 31010702007642号
手机版
小黑屋
RSS
返回顶部
关灯
在本版发帖
快速回复
返回顶部
返回列表