OAuth 2规范让我相信“资源服务器”和“授权服务器”不一定必须是同一个应用程序,但我正在努力弄清楚这在实践中是如何实际实现的。
例如,假设存在以下应用程序:
场景#1:登录网络前端
场景#2:授权第三方应用
我理解的部分是如何在场景#2中显示允许/拒绝表单之前验证用户。用户可能登录到主Web应用程序,但是auth服务不知道这一点,并且会以某种方式需要再次对用户进行身份验证。 auth服务是否也需要支持登录/会话?
我想知道网络应用程序是否更有意义负责显示允许/拒绝表单有两个原因:
以下是方案#2的一种可能替代方案:
处理此问题的最佳方法是什么?任何一般性意见,建议等都会很棒!
由于
答案 0 :(得分:4)
你的备用场景可能就是你想要的:如果你真的想把你的流量分开,你可以尝试这样的事情:
答案 1 :(得分:4)
OAauth2框架文档:https://tools.ietf.org/html/rfc6749
(A)客户端通过使用身份验证来请求访问令牌 授权服务器并提交授权许可。
(B)授权服务器验证客户端并验证 授权授权,如果有效,则发出访问令牌 和刷新令牌。
(C)客户端向资源发出受保护的资源请求 服务器通过提供访问令牌。
(D)资源服务器验证访问令牌,如果有效, 服务请求。
(E)重复步骤(C)和(D)直到访问令牌到期。如果 客户端知道访问令牌已过期,它跳到步骤(G); 否则,它会发出另一个受保护的资源请求。
(F)由于访问令牌无效,资源服务器返回 无效的令牌错误。
(G)客户端通过身份验证请求新的访问令牌 授权服务器并呈现刷新令牌。该 客户端身份验证要求基于客户端类型 以及授权服务器策略。
(H)授权服务器对客户端进行身份验证并进行验证 刷新令牌,如果有效,则发出新的访问令牌(和, 可选地,新的刷新令牌。)
答案 2 :(得分:0)
[http://alexbilbie.com/guide-to-oauth-2-grants/] [1] 尝试访问此内容也可以使其更加清晰。
如先前的作者所述,仅当您属于[SPA]或移动应用属于第一方时才使用密码授予 就像直接登录gmail一样。 GMAIL是Google页面/应用的一部分,
ii)要从授权服务器获取代码[授权类型=代码],则应从后端进行,而不是从浏览器后端通道通信中进行。
查看OAUTH2 IN ACTION书籍-曼宁出版物,这是迄今为止有关oauth2的最佳文章之一