Oauth3的4种模式:
- 授权码(Authorization)模式(获取code、code换取access_token)
- 简化(Impilict)模式(直接换取access_token,基本不用)
- 密码(Resource Owner Password)模式(客户端向用户索取账号密码,然后客户端向服务端索取授权,基本不用)
- 客户端(Client)模式(客户端以自己的名义要求"服务提供商"提供服务;场景:提供接口服务)
授权码模式流程
-
注册客户端
- clientId = 1
- secret=secret
- 注册用户
-
请求授权码
- http://localhost:8080/oauth3-server/authorize?client_id=client_id&client_secret=client_secret&response_type=code&redirect_uri=redirect_uri&scope=productservice%20agentservice
- 跳转至授权登录页面
- 登录后,回调到redirect_uri?code=xxxxx&scope=productservice%20agentservice
- POST http://localhost:8080/oauth3-server/token?client_id=client_id&client_secrets=client_secrets&grant_type=authorization_code&redirect_uri=redirect_uri&code=xxxx&scope=productservice%20agentservice 得到accessToken
简化模式流程
同授权码模式
只是少了步骤5,6
第5步登录后就返回accessToken
客户端授权流程
客户端和授权中心之间的对接,跟用户无关
密码模式
用户将账户密码告诉客户端
客户端用账户密码获得授权
总结
- 常用的还是授权码模式。
- 相比授权码模式,简化模式虽然降低了安全性,但也降低了使用难度
- 客户端模式一般用于 API调用服务
- 密码模式因为直接泄露密码,基本没有使用的场景