使用session和cookie的方式,有以上几个缺点。
1、更改demo项目的依赖改为app
2、启动项目demo项目,根据报错挪一些代码
3、@EnableAuthorizationServer开启认证服务器
@Configuration
@EnableAuthorizationServer
public class FuiouAuthorizationServerConfig {
}
Spring Security已经替我们把oauth2的4中授权模式实现了,接下来试试看。
授权码模式
1、访问/oauth/authorize 获取用户授权,得到授权码
需要几个参数:response_type,client_id,redirect_uri,scope
security.oauth2.client.client-id= fuiou
security.oauth2.client.client-secret= fuiousecret
2、访问后会弹出一个用户名和密码的窗口,输入用户在自己业务系统中的用户名和密码,会跳转到了一个报403的页面。
用户角色中必须有一个ROLE_USER
return new SocialUser(userName, password,true,true,true,true,AuthorityUtils.commaSeparatedStringToAuthorityList("admin,ROLE_USER"));
3、再次访问跳转到了用户授权的页面
image.png
4、同意授权,会跳转到redirect_uri,并携带着授权码
http://127.0.0.1/index.html?code=WcdnYl
5、用授权码去获取token
image.png image.png密码模式
1、获取token
image.png
image.png
开启资源服务器
package com.fuiou.security.app;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
@Configuration
@EnableResourceServer
public class FuiouResourceServerConfig {
}
携带token访问接口
image.png自定义认证
除了4种模式外还需要自定义认证,如手机号加短信验证码认证获取token。
image.png
网友评论