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

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

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

各位有什么思路吗。
6048 次点击
所在节点    程序员
45 条回复
bluedawn
2024-08-06 10:21:28 +08:00
passkey
bluedawn
2024-08-06 10:22:19 +08:00
你本来就有 authelia/authetik/keyclock 搭建的话接入它们也行
busier
2024-08-06 10:24:02 +08:00
就自己用的业务,我用 TLS/SSL 双向证书验证

如果在其它设备临时用下,就发个短期证书。
nealot
2024-08-06 10:26:48 +08:00
一个安全性差一点,但是简单一点的办法:

生成一个 uuid ,配置在 nginx 里面,作为 url 的 prefix 。当然全站要强制启用 HTTPS
lymanbernadette6
2024-08-06 10:30:11 +08:00
Nginx 密码最简单
9A0DIP9kgH1O4wjR
2024-08-06 10:37:05 +08:00
用 nginx 加密码?
Inzufu
2024-08-06 10:45:26 +08:00
@busier 这是个思路。拓展一下:如果业务里接触不到 Nginx 这一层或者设备不方便安装证书的话,可以把证书放在浏览器的 localstorage 里,鉴权时服务器发送 challenge 由客户端签名后再返回给服务端校验,有点像 webauthn 。
Inzufu
2024-08-06 10:47:12 +08:00
@nealot 这个本质上还是密码校验,就是是在 Nginx 这一层实现的。
但还是谢谢你的思路,确实比在应用中实现方便一点儿。
xcsoft
2024-08-06 10:48:36 +08:00
用浏览器的 passkey 就很方便
Inzufu
2024-08-06 10:49:40 +08:00
@lymanbernadette6 @hanierming 有些业务接触不到 Nginx 这层,而且这个不太好做限流,密码有被爆破的风险?
还是谢谢思路。
Inzufu
2024-08-06 10:53:00 +08:00
@bluedawn @xcsoft passkey 确实是安全方便,唯一的问题就是兼容性,不过其实自己用也没必要考虑那么多。
但问题是 passkey 只是单次鉴权的方式,没办法持久化认证。
estk
2024-08-06 10:56:34 +08:00
自用就 ssl + nginx 密码
xcsoft
2024-08-06 10:56:51 +08:00
基本现代化浏览器都已经对 passkey 兼容了吧
持久化认证,只能自己实现业务逻辑,比如身份验证后使用 jwt ,或者使用 一些类似 webvpn 之类的(大学的校内资源访问) 那种?
或者直接使用 wireguard ,业务不放公网也可以
Wh0amis
2024-08-06 11:09:07 +08:00
搞个 ip 白名单,然后裸奔,啥鉴权都不需要
wxyrrcj
2024-08-06 11:15:10 +08:00
nginx 配置个密码
wu67
2024-08-06 11:15:22 +08:00
echo 账户名:$(openssl passwd -1 你的密码)>>/etc/nginx/webdavpasswd
nginx auth_basic_user_file /etc/nginx/webdavpasswd;

接口服务等无法每次调用都输密码的, 可以加自定义一个 http header. 注意不要自定义 ua 的内容, chrome 无法自定义 ua, 纯纯浪费时间
potatowish
2024-08-06 11:16:11 +08:00
1. vpn ,ip 白名单
2. 服务端企业微信接口下发动态验证码
3. 服务端 bark 推送动态验证码到 iphone
isSamle
2024-08-06 11:34:35 +08:00
如果是自己的服务调用的话,就是内网调用不开防火墙,如果是外部调用,就配秘钥
securityCoding
2024-08-06 11:34:47 +08:00
套个 cf 认证了
BH1SMB
2024-08-06 11:51:26 +08:00
IP 白名单或者 key 验证

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

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

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

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

© 2021 V2EX