使用Caddy Security 为你的网站增加自动置登录鉴权
6/4/2023, 4:31:59 PM
Last updated on 6/5/2023, 2:35:49 PM
toc
- 使用Caddy作为你网站的前置代理
- 使用Caddy Security增加自动置登录鉴权
- 安装Caddy Security
- 配置Caddy Security
Intro
很多情况下网站登录后访问是必不可少的,如果你的需求简单或者懒得开发。使用Caddy Security可以很简单的为你解决问题。
使用Caddy作为你网站的前置代理
Caddy 是一个Go语言写的开源Web Server,功能挺强大。支持反向代理,以及自动化的HTTPS。很多人也用来替代Nginx,因为它可以自动申请续费letsencrypt之类的免费证书,而且配置也挺简单。
代码语言:javascript
复制
yourdamain.com {
encode zstd gzip
reverse_proxy localhost:8080
}
使用Caddy Security增加自动置登录鉴权
Caddy同时也支持多内置和第三方的模块。其中的Caddy Security 模块就是今天的主角,它为Caddy带来了很丰富的登录方式。
下面就是点流水账式的折腾记录:
安装Caddy Security
Caddy Security属于第三方模块,需要单独安装。Caddy 官方似乎推荐使用xcaddy来安装,但是我没有成功,而是通过官方的集成下载方式搞定。
配置到path,或者 /path/to/caddy start
也一样工作
配置Caddy Security
这里给出账号密码登录的例子。可以按照官方local鉴权的方式, 能配差不多。
这里是我的配置:
代码语言:javascript
复制
{ order authenticate before respond order authorize before basicauth
security { local identity store localdb { realm local path /path/to/users.json } authentication portal myportal { crypto key sign-verify {env.JWT_SHARED_KEY} enable identity store localdb cookie domain youdomain.com ui { custom html header path /path/to/custom-head.html links { "Go App" https://app.youdomain.com icon "las la-binoculars" } custom js path /root/caddy/custom.js } transform user { suffix match email @youdomain.com add role authp/user } } authorization policy admins_policy { set auth url http://auth.youdomain.com allow roles authp/admin authp/user crypto key verify {env.JWT_SHARED_KEY} } }
}
auth.youdomain.com {
authenticate with myportal
}
app.youdomain.com {
authorize with admins_policy
encode zstd gzip
reverse_proxy localhost:8080
}
- 上面
app.youdomain.com
是业务网站,auth.youdomain.com
是独立的鉴权页面。如果你想一个域名,可以尝试利用caddyroute
的功能。 - 想要添加用户,可以按照Caddy Security local 密码指示 指示,添加新用户到
/path/to/users.json
中,注意用户权限也可以设为authp/user
- 支持自定义UI
- 可以配置自定义模版,添加head,js等。
- 上述links是可以指定登录成功后的跳转链接。