fenixsoft / awesome-fenix

讨论如何构建一套可靠的大型分布式系统
https://icyfenix.cn
8.8k stars 1.02k forks source link

「Comment」https://icyfenix.cn/architect-perspective/general-architecture/system-security/authorization.html #92

Open fenixsoft opened 4 years ago

fenixsoft commented 4 years ago

https://icyfenix.cn/architect-perspective/general-architecture/system-security/authorization.html

dengchaoh commented 3 years ago

授权码模式的设计解答相当nice,刚刚产生疑问,接着就给解答了。三个回答,一个套一个,完美解答所有疑问。厉害。

dengchaoh commented 3 years ago

这种循序渐进式的解答,完全为读者考虑,解答的真妙,谢谢作者。

UUNNFLY commented 3 years ago

在设备码模式中,授权服务器为什么不直接提供令牌?

JiangGuangxing commented 3 years ago

微服务架构并不提倡同一个系统的各服务间有默认的信任关系 这个能解释下为什么吗?如果各个服务都部署在统一内网,不进行认证授权有什么隐患吗

fenixsoft commented 3 years ago

@JiangGuangxing 微服务架构并不提倡同一个系统的各服务间有默认的信任关系 这个能解释下为什么吗?如果各个服务都部署在统一内网,不进行认证授权有什么隐患吗

在后面的“零信任安全”一节,应该能解答你的疑问

JiangGuangxing commented 3 years ago

看完oauth2之后,自有系统登陆怎么做有点搞不清楚了,您在文中提到使用密码模式获取token,这种方式需要在前端保存app密钥,不安全吧?

fenixsoft commented 3 years ago

@JiangGuangxing 看完oauth2之后,自有系统登陆怎么做有点搞不清楚了,您在文中提到使用密码模式获取token,这种方式需要在前端保存app密钥,不安全吧?

前端确实需要持有ClientSecret,也确实是被攻击者拿到ClientSecret后被冒认的风险。 不过,这里攻击者仅能够做到“冒认前端代码去调用登录服务”这件事,要成功登录,需要同时拿到用户名和密码才行。 这里与互联网上绝大多数网站的完全公开(不需要ClientSecret之类的凭证就能调用)登录服务本质上并没有什么不同。

bigbenfather commented 3 years ago

“至于认证服务器到到操作代理之间的这一段链路的安全,则只能通过TLS(即HTTPS)来保证没有中间不会受到攻击了”中的“没有中间不会”不通顺

wao3 commented 3 years ago

“在隐模式中明确禁止发放刷新令牌”应改为“在隐模式中明确禁止发放刷新令牌”

ljhrot commented 3 years ago

“服务器到到操作代理”应改为“服务器到操作代理”

qisixian commented 3 years ago

"Kubernetes 完全遵循 RBAC 了来进行服务访问控制"应改为"Kubernetes 完全遵循了 RBAC 来进行服务访问控制"

fenixsoft commented 3 years ago

"Kubernetes 完全遵循 RBAC 了来进行服务访问控制"应改为"Kubernetes 完全遵循了 RBAC 来进行服务访问控制"

已更新,感谢。

heq99 commented 2 years ago

OpenID Connect (OIDC) 和 Security Assertion Markup Language (SAML) 也是广泛应用的认证和授权协议。如果能增加对它们的讲解就完美了。

hjs0512 commented 2 years ago

如果能把rbac+oauth2结合起来讲就更好

yingang commented 2 years ago

开始进行授权过程以前,第三方应用先要到授权服务器上进行注册,所谓注册,是指向认证服务器提供一个域名地址,然后从授权服务器中获取 ClientID 和 ClientSecret,以便能够顺利完成如下授权过程 <-- 这句里的授权服务器和认证服务器是一个东西?都是 authorization server?

heq99 commented 2 years ago

开始进行授权过程以前,第三方应用先要到授权服务器上进行注册,所谓注册,是指向认证服务器提供一个域名地址,然后从授权服务器中获取 ClientID 和 ClientSecret,以便能够顺利完成如下授权过程 <-- 这句里的授权服务器和认证服务器是一个东西?都是 authorization server?

我理解授权服务器和认证服务器不一定是一个。比如授权服务器可以是Windows Active Directory,但是认证服务器可以是Okta,甚至是google,facebook,微信,等等。

yingang commented 2 years ago

@heq99

开始进行授权过程以前,第三方应用先要到授权服务器上进行注册,所谓注册,是指向认证服务器提供一个域名地址,然后从授权服务器中获取 ClientID 和 ClientSecret,以便能够顺利完成如下授权过程 <-- 这句里的授权服务器和认证服务器是一个东西?都是 authorization server?

我理解授权服务器和认证服务器不一定是一个。比如授权服务器可以是Windows Active Directory,但是认证服务器可以是Okta,甚至是google,facebook,微信,等等。

谢谢回复,主要是上下文好像都没提到认证服务器,感觉有点奇怪

Blackstone123 commented 1 year ago

@heq99 OpenID Connect (OIDC) 和 Security Assertion Markup Language (SAML) 也是广泛应用的认证和授权协议。如果能增加对它们的讲解就完美了。

赞同,最近被opensaml 搞得头大,想了解saml 和Oauth2 的关系怎样的

unifreak commented 1 year ago

把 oauth 叫做 "认证授权协议" 是否准确呢? <Oauth 2.0 In Action> 以及搜索结果都明确的说 "Oauth is NOT an authentication protocol". 作者本文其实也暗含了这一点.

NPUTom commented 10 months ago

“许可为的是解耦操作与资源之间的多对多关系” 请问,许可是怎么能做到操作与资源之间的解耦的?