我开发的Android应用程序使用的是使用OAuth协议的REST服务。在第一个活动中,app显示登录屏幕。这是流程:
1)用户输入用户名和密码。
2)App向REST服务发出请求,提供用户名和密码。
3)REST服务检查凭据,如果正确,请向我的OAuth2提供商服务器请求access_token
。
4)REST服务回答提供access_token
和refresh_token
5)在接下来的REST服务器请求(获取人,文章等数据......)应用程序将提供access_token
和refresh_token
。
6)当REST服务处理请求时,将验证access_token
(使用我的OAuth服务器的令牌信息端点)。
7)如果access_token正确且未过期,REST服务将返回该应用所要求的数据。
当REST服务检测到access_token
已过期时,请使用refresh_roken
请求其他人。
现在,我的问题:
当REST服务在旧服务到期后检索新的access_token
时,REST服务是否将该服务发送给该响应中的应用程序?
如果是这样,应用程序是否在每个请求/响应中检查是否已从REST服务发送新的access_token
?
我不知道我是否以正确的方式,我试图理解这一流程。
感谢。
答案 0 :(得分:9)
假设没有涉及浏览器且应用程序(又名客户端)使用所谓的资源所有者密码凭证授权,则流程为:
用户(又名资源所有者)向客户提供他/她的用户名和密码
客户端向授权服务器发出令牌请求,提供用户名和密码
授权服务器检查凭据,如果它们是正确的,它会在响应中为客户端提供访问令牌和可选的刷新令牌
在对REST服务器的请求中(为了获取人员,文章......等数据),客户端将提供访问令牌
当REST服务处理请求时,它将验证调用授权服务器的令牌验证端点的访问令牌,或者通过在本地验证令牌(例如,如果访问令牌是JWT)。
如果访问令牌正确,未过期且具有正确的权限(又名。"范围"),则REST服务将返回客户端要求的数据
当客户端检测到access_token已过期时(例如,因为REST服务器返回错误),它会使用所谓的刷新令牌授权/流程使用刷新令牌向授权服务器请求另一个访问令牌
答案 1 :(得分:0)
OAuth 2.0流程:
如果您需要更多的理解,请发表评论!