我目前正在使用 django Rest 框架开发 API,我有一个关于令牌(JWT 或 OAuth2)身份验证的问题。
实际上,当身份验证服务器和资源服务器相同时,我对长期刷新令牌的实用性存有疑问。
我对刷新令牌的理解是,当用户进行身份验证时,身份验证服务器会返回一个短期访问令牌和一个我们存储的长期刷新令牌。
当用户与资源服务器交互时,我们在请求中发送访问令牌,而不是刷新令牌。如果访问令牌已过期,我们会请求新的访问令牌,并将刷新令牌发送到身份验证服务器。
通过这种方式,如果攻击者获得访问令牌,他将有很短的时间来使用它,因为它的生命周期很短。
但在身份验证服务器=资源服务器的情况下,如果攻击者可以破坏访问令牌,那么他也可以破坏刷新令牌。他可以轻松获得新的访问令牌,对吗?
那么在这种情况下使用刷新令牌系统的目的是什么(身份验证服务器=资源服务器)?在我看来,这与设置长期访问令牌相同,但我不确定......
谢谢
我正在尝试在我的服务器(Debian 10)上安装一个 kubernetes 集群。在我的服务器上,我使用 ufw 作为防火墙。在创建集群之前,我在 ufw 上允许这些端口:
179/tcp、4789/udp、5473/tcp、443/tcp、6443/tcp、2379/tcp、4149/tcp、10250/tcp、10255/tcp、10256/tcp、90964/cpt
正如 calico doc 所建议的(https://docs.projectcalico.org/getting-started/kubernetes/requirements)和这个关于 kubernetes 安全性的 git repo(https://github.com/freach/kubernetes-security-best-practice) .
但是当我想创建集群时,由于 Felix 未上线,calico/node pod 无法启动(我在 ufw 上允许 9099/tcp):
Liveness 探测失败:calico/node 未准备好:Felix 未上线:获取http://localhost:9099/liveness:拨号 tcp [::1]:9099:连接:连接被拒绝
如果我禁用 ufw,则创建集群并且没有错误。
所以我想知道我应该如何配置 ufw 以便 kubernetes 工作。如果有人可以帮助我,那就太好了,谢谢!
编辑:我的 ufw 状态
To Action From
6443/tcp ALLOW Anywhere
9099 ALLOW Anywhere
179/tcp ALLOW Anywhere
4789/udp ALLOW Anywhere
5473/tcp ALLOW Anywhere
2379/tcp ALLOW Anywhere
8181 ALLOW Anywhere
8080 ALLOW Anywhere
###### (v6) LIMIT Anywhere (v6) …Run Code Online (Sandbox Code Playgroud) 我有一个 User 模型和一个 Article 模型。我希望用户只为一篇文章投票一次。所以我想创建一个 Vote 模型,它只与用户模型相关一次,与文章模型只相关一次。
我怎样才能做到这一点 ?是否可以在 Vote 模型中使用多个 OneToOneField,如下所示:
class Vote(models.Model):
user_id = models.OneToOneField(User)
article_id = models.OneToOneField(Article)
vote = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
我也看到了这个方法(Django。限制每个用户只能投票一次):
class Vote(models.Model):
class Meta:
unique_together = (('user_id','article_id'),)
user_id = models.ForeignKey(User)
article_id = models.ForeignKey(Article)
vote = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
哪一个是最好的 ?
谢谢