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

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

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

各位有什么思路吗。
4797 次点击
所在节点    程序员
45 条回复
bluedawn
43 天前
passkey
bluedawn
43 天前
你本来就有 authelia/authetik/keyclock 搭建的话接入它们也行
busier
43 天前
就自己用的业务,我用 TLS/SSL 双向证书验证

如果在其它设备临时用下,就发个短期证书。
nealot
43 天前
一个安全性差一点,但是简单一点的办法:

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

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

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

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

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

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

© 2021 V2EX