OAuth(Open Authorization)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。
OAuth 是一种授权机制,通过颁发令牌(token)的形式授权第三方应用,获取用户数据。
角色
授权服务器(Authorization Server),提供用户认证、用户授权、客户端验证
资源服务器(Resource Server),拥有用户数据的服务器,比如用户的图片、视频等
资源所有者(Resource Owner),一般指用户
客户端(Client),一般指第三方应用
获取令牌
OAuth 2.0 规定了四种获得令牌的流程。
- 授权码(authorization code)
- 客户端凭证(client credentials)
隐藏式(implicit) (不安全,OAuth 2.1 已移除)密码式(password) (不安全,OAuth 2.1 已移除)
授权码流程
授权中心首页: auth.com
授权中心的授权页面: auth.com/oauth/authorize
三方应用首页: client.com
三方应用回调地址: client.com/callback
- 用户访问第三方应用,选择通过OAuth2进行授权,跳转到授权服务器的授权页地址
- 三方应用访问授权服务器的授权页面:auth.com/oauth/authorize?response_type=code&client_id=app1&redirect_uri=client.com/callback
- 进入授权服务器授权页,先检查用户是否登录,若已登录则展示授权页面,若未登录则先跳转到登录页面,登录后再跳转到授权页
- 授权页面上可以点击 “同意授权” 或 “拒绝授权”,用户操作后,会重定向到三方应用的回调地址,并携带授权结果
- 若“同意授权”,回调参数为 code,重定向地址 client.com/callback?code=xxx
- 若“拒绝授权”,回调参数为 error、error_description,重定向地址 client.com/callback?error=access_denied&error_description=User denied access
- 三方应用回调地址,通过code获取token。
- 三方应用可以通过token从授权中心获取用户信息,同步到自己应用中,再实现自身应用自动登录。
reference:
OAuth 2.0 的一个简单解释
OAuth 2.0 的四种方式
https://oauth.net
https://www.oauth.com
end