大家是怎么对自用的服务做鉴权的

135 天前
 Inzufu
比如网站的后台,图床的上传页和一些小 API 接口。
最常用的应该是密码,但是一个服务一个密码感觉体验很不好,管理起来也麻烦。
用过钉钉、飞书、slack 等服务的 oauth 登录接口,实现起来挺简单,但感觉还不算是最佳实践。

我能想到的:
1:邮箱验证码登录,实现起来可能稍微有点麻烦。
2:webauthn 用手机或者安全密钥登录,但我还没研究明白。
3:TOTP (基于时间的验证码),但是如果单用一个六位数的数字做鉴权是否不太安全。
问题是这三种只是单次认证的方法,要做持久化会话就得几乎从头写一个鉴权系统,有点为了醋包饺子的感觉。

各位有什么思路吗。
5124 次点击
所在节点    程序员
45 条回复
zpfhbyx
135 天前
加 key 最简单了
libook
135 天前
用密码管理器,一个服务一个密码也无所谓。

主要是并不是所有服务都支持一样的统一单点登录技术。
Puteulanus
135 天前
感觉你想要的可能是 Auth0

类似你说的 oauth 登录接口,不过它整合了常见登录方式和一些第三方登陆

登陆跳回来的 callback 是 jwt ,你自己这边简单做一下 jwt 的验证就行了。我是用的 Nginx 的 ngx_http_auth_jwt_module 模块在中间做一个验证网关,对需要控制访问的 web 服务转接一下 https://github.com/puteulanus/nal ,服务那边就基本上无感了

我一般会开 GitHub 登陆和 email 登陆,email 我记得是邮件验证码吧,太久了印象不深了,magic link 那种不知道它有没有。Auth0 还是挺有名的服务的,OpenAI 的登陆就是用的它
henix
135 天前
https (自签证书) + http basic auth
opengps
135 天前
密码我都懒得用,我就是一个自己才知道的 url ,带上自己定制规律的入参才能打开,越是这种自定义的规则,黑客越猜不到
tool2dx
135 天前
我是自己套用 RPC 协议加密,因为可以远程执行命令,我怕被别人抓包,只能加密。

加密相当于鉴权了。
iLtc
135 天前
我目前是 用户名 + TOTP + reCAPTCHA ,应该能防止暴力破解。

最近在考虑要不要换成 Passkey 。
nosmile
135 天前
IP 白名单,后面准备写个脚本,在新的地点一键放通
bobryjosin
135 天前
cloudflare zero trust ,tunnel 绑个域名走 github 认证,点一下就能过了,自用的服务都 wireguard 组网,直接用内网 ip 访问。
totoro625
135 天前
直接就是 IP 鉴权
访问一个特定服务器的 URL 记录访问 IP ,通过 ddns 传递 IP 到域名,其他服务器定时拉取 IP 解析并放行,隔一段时间删除该 IP
echoless
135 天前
totoro625
135 天前
@nosmile #28 期待一下,特别需要
我自用的方案有延迟,不太行
zsh2517
134 天前
目前公网统一的入口,走 nginx + Basic Auth 转发到内网里面的一个 Nginx Proxy Manager ,它再分发到具体服务上。
内网里面基本没有鉴权(有通常也是弱密码)。只有极个别服务是强密码验证(比如 pve 的 web UI )

---
目前个别服务(支持 OAuth2/OpenID 登录的),接入了 GitLab 作为第三方登录。
后面计划改成每个服务均绑定 127.0.0.1 ,然后前面套一个轻量的鉴权网关(可能支持 oauth/passkey/password 三种验证)。但是懒得写又没找到合适的开源项目( 天天在 V2EX 打广告的 casdoor 似乎可能满足需求,但是之前部署过一次文档质量有点差),就一直咕咕咕了
zsh2517
134 天前
@zsh2517 都是 web 服务( http, https, ws, wss )。对于 tcp/udp 类的我没太考虑过
WashFreshFresh
134 天前
@zsh2517 sa-token 到还可以,你说的都支持。
wbrobot
134 天前
直接前端生成个浏览器指纹当 uuid ,设置个 password 就行了。
wbrobot
134 天前
@wbrobot 我的一个站 https://9898555.com 就是用前端浏览器指纹当 uuid ,弱绑定用户
beyondstars
134 天前
1. 自用服务部署在内网(或者虚拟局域网),透过 wg, ssh 等加密隧道软件进行连接。
2. 自签 ssl 证书 + http basic auth;
3. Cloudflare tunnel (只是一个想法,没试过);
4. 对接 3rd party auth api 太麻烦了(再简单的 3rd party auth 对接也远不如写几行配置,敲几行命令简单)。
beyondstars
134 天前
补充一个:

5. 部署在自有 k8s 集群的可以用 client cert + kubectl port-forward + clusterip service 的方式安全访问。
PerFectTime
134 天前
caddy + caddy-security 模块 + github oauth

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1062827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX