OAuth 2.0 定义了四种授权方式。
- 密码模式(resource owner password credentials)
- 授权码模式(authorization code)
- 简化模式(implicit)
- 客户端模式(client credentials)
密码模式(resource owner password credentials
)
- 这种模式是最不推荐的,因为 client 可能存了用户密码
- 这种模式主要用来做遗留项目升级为 oauth2 的适配方案
- 当然如果 client 是自家的应用,也是可以
- 支持 refresh token
授权码模式(authorization code
)
- 这种模式算是正宗的 oauth2 的授权模式
- 设计了 auth code,通过这个 code 再获取 token
- 支持 refresh token
简化模式(implicit
)
- 这种模式比授权码模式少了 code 环节,回调 url 直接携带 token
- 这种模式的使用场景是基于浏览器的应用
- 这种模式基于安全性考虑,建议把 token 时效设置短一些
- 不支持 refresh token
客户端模式(client credentials
)
- 这种模式直接根据 client 的 id 和密钥即可获取 token,无需用户参与
- 这种模式比较合适消费 api 的后端服务,比如拉取一组用户信息等
- 不支持 refresh token,主要是没有必要
refresh token 的初衷主要是为了用户体验不想用户重复输入账号密码来换取新 token,因而设计了 refresh token 用于换取新 token
这种模式由于没有用户参与,而且也不需要用户账号密码,仅仅根据自己的 id 和密钥就可以换取新 token,因而没必要 refresh token
小结
- 密码模式(resource owner password credentials)(
为遗留系统设计
)(支持refresh token
) - 授权码模式(authorization code)(
正宗方式
)(支持refresh token
) - 简化模式(implicit)(
为web浏览器应用设计
)(不支持refresh token
) - 客户端模式(client credentials)(
为后台api服务消费者设计
)(不支持refresh token
)
作者:go4it
链接:https://juejin.im/post/5a2933a96fb9a0452a3c3988
来源:掘金
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于