博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户权限模块之oauth2.0
阅读量:6997 次
发布时间:2019-06-27

本文共 5710 字,大约阅读时间需要 19 分钟。

主要是在springsecurity上面扩展即可,所以内容也是基于上一个,

sql:

CREATE TABLE `auth_access_token` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`token_id` varchar(255) DEFAULT NULL COMMENT 'token id',
`token` blob COMMENT 'token',
`authentication_id` varchar(255) DEFAULT NULL COMMENT '认证id',
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
`client_id` varchar(100) DEFAULT NULL COMMENT '终端id',
`authentication` blob COMMENT '认证',
`refresh_token` varchar(255) DEFAULT NULL COMMENT '刷新token',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_dt` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` int(11) DEFAULT NULL COMMENT '最后更新人',
`last_update_dt` datetime DEFAULT NULL COMMENT '最后更新时间',
`sts` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2122 DEFAULT CHARSET=utf8 COMMENT='认证token表';

 

CREATE TABLE `auth_client_details` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`client_id` varchar(255) DEFAULT NULL COMMENT '终端码',
`resource_ids` varchar(255) DEFAULT NULL COMMENT '资源id',
`client_secret` varchar(255) DEFAULT NULL COMMENT '终端密钥',
`scope` varchar(255) DEFAULT 'read,write,trust' COMMENT 'scope',
`authorized_grant_types` varchar(255) DEFAULT 'password,refresh_token,authorization_code,client_credentials' COMMENT '授权类型',
`web_server_redirect_uri` varchar(255) DEFAULT NULL COMMENT '跳转地址',
`authorities` varchar(255) DEFAULT 'ROLE_CLIENT' COMMENT '权限',
`access_token_validity` int(11) DEFAULT NULL,
`refresh_token_validity` int(11) DEFAULT NULL,
`additional_information` varchar(500) DEFAULT NULL,
`archived` tinyint(1) DEFAULT '0',
`trusted` tinyint(1) DEFAULT '0',
`autoapprove` varchar(255) DEFAULT 'false',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_dt` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` int(11) DEFAULT NULL COMMENT '最后更新人',
`last_update_dt` datetime DEFAULT NULL COMMENT '最后更新时间',
`sts` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='认证client配置表';

 

CREATE TABLE `auth_code` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`code` varchar(255) DEFAULT NULL,
`authentication` blob,
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_dt` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` int(11) DEFAULT NULL COMMENT '最后更新人',
`last_update_dt` datetime DEFAULT NULL COMMENT '最后更新时间',
`sts` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='认证代码码';

 

CREATE TABLE `auth_client_details` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`client_id` varchar(255) DEFAULT NULL COMMENT '终端码',
`resource_ids` varchar(255) DEFAULT NULL COMMENT '资源id',
`client_secret` varchar(255) DEFAULT NULL COMMENT '终端密钥',
`scope` varchar(255) DEFAULT 'read,write,trust' COMMENT 'scope',
`authorized_grant_types` varchar(255) DEFAULT 'password,refresh_token,authorization_code,client_credentials' COMMENT '授权类型',
`web_server_redirect_uri` varchar(255) DEFAULT NULL COMMENT '跳转地址',
`authorities` varchar(255) DEFAULT 'ROLE_CLIENT' COMMENT '权限',
`access_token_validity` int(11) DEFAULT NULL,
`refresh_token_validity` int(11) DEFAULT NULL,
`additional_information` varchar(500) DEFAULT NULL,
`archived` tinyint(1) DEFAULT '0',
`trusted` tinyint(1) DEFAULT '0',
`autoapprove` varchar(255) DEFAULT 'false',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_dt` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` int(11) DEFAULT NULL COMMENT '最后更新人',
`last_update_dt` datetime DEFAULT NULL COMMENT '最后更新时间',
`sts` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='认证client配置表';

 

CREATE TABLE `auth_refresh_token` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`token_id` varchar(255) DEFAULT NULL,
`token` blob,
`authentication` blob,
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_dt` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` int(11) DEFAULT NULL COMMENT '最后更新人',
`last_update_dt` datetime DEFAULT NULL COMMENT '最后更新时间',
`sts` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=535 DEFAULT CHARSET=utf8 COMMENT='认证授权码表';

 ======================

application-security.xml中加上oauth配置

java代码
CustomClientDetailsService
public class CustomClientDetailsService implements ClientDetailsService {
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor(); @Autowired private ClientDetailsDao clientDetailsDao; @Override public ClientDetails loadClientByClientId(String client) throws ClientRegistrationException {
List
clientDetailsDos = clientDetailsDao.query(client); if(CollectionUtils.isNotEmpty(clientDetailsDos)){
return new TmsClientDetails(clientDetailsDos.get(0)) ; }else{
throw new UsernameNotFoundException(this.messages.getMessage("DigestAuthenticationFilter.usernameNotFound",new Object[]{client}, "Client {0} not found")); } } }
CustomTokenStore
CustomTokenStore implements TokenStore 重写token的保存 刷新 读取方法
AuthCodeService
AuthCodeService extends RandomValueAuthorizationCodeServices 重写保存和移除code方法
 

转载于:https://www.cnblogs.com/linxingall/p/6927745.html

你可能感兴趣的文章