文章目录
OAuth2 授权:Resource owner password(密码模式)
1、用户提供用户名、密码给客户端应用
2、客户端应用使用用户提供的用户名和密码和自己应用的clientid和clientserect来请求令牌
3、校验用户身份(用户名和密码)和客户端应用身份(clientid和clientserect)并返回访问令牌和刷新令牌
适用于app应用
OAuth2 授权:Authorization code grant授权码模式,适用于浏览器模式
1、像客户端应用发起访问
2、引导用户认证到授权服务器
3、用户提供身份证明
4、授权服务器发送授权码到前段服务器
5、前端服务器携带授权码到授权服务器申请令牌请求
6、返回访问令牌和刷新令牌
OAuth2:Implicit(简化授权模式)
在授权码模式的基础上做的简化,有一些客户端应用是没有服务器的
1、像客户端应用发起请求
2、引导用户认证
3、用户提供身份证明
4、返回访问令牌和刷新令牌
OAuth:Client credentials(客户端证书)
1、客户端应用发送clientid和clientsecret到授权服务器
2、授权服务器校验clientid和clientsecret并返回访问令牌
授权码模式使用案例
去认证服务器获取授权码
window.location.href='http://auth.test.com:8085/oauth/authorize?'+
'client_id=admin&' //哪个客户端应用跳转过来的
+'redirect_uri=http://admin.test.com:8080/oauth/callback&' //回调地址,认证服务器发送回来的授权码接收地址
+'response_type=code&'
+'state=abc';
}
如果未登录直接跳转到授权服务器默认的登录界面
注:认证服务器配置,继承WebSecurityConfigurerAdapter,里面默认的配置,是需要所有的页面都需要认证才可以访问
输入用户名、密码(按照之前的认证服务器配置)去验证用户信息
在数据库增加配置,添加授权码模式配置
注:web_server_redirect_uri填写的和获取授权码的redirect_uri地址一样,authorized_grant_types增加授权码模式(authorization_code),autoapprove填写为true,允许所有权限,也可以填写read或者write,是scope里面包含的权限信息