Oauth2的4种模式:
- 受权码(Authorization)模式(获取code、code换取access_token)
- 简化(Impilict)模式(直接换取access_token,基本不用)
- 密码(Resource Owner Password)模式(客户端向用户索取帐号密码,而后客户端向服务端索取受权,基本不用)
- 客户端(Client)模式(客户端以本身的名义要求"服务提供商"提供服务;场景:提供接口服务)
受权码模式流程
-
注册客户端安全
- clientId = 1
- secret=secret
- 注册用户
-
请求受权码ide
- 跳转至受权登陆页面
- 登陆后,回调到redirect_uri?code=xxxxx&scope=productservice%20agentservice
- POST http://localhost:8080/oauth2-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调用服务
- 密码模式由于直接泄露密码,基本没有使用的场景