• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解Springboot Oauth2 Server搭建Oauth2认证服务

springboot 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

本教程源码
https://github.com/bestaone/HiAuth

源码比较全面,教程我就只介绍关键代码了,喜欢的点个star,谢谢!

关键词

  • 微服务认证
  • Oauth2
  • 认证中心
  • springboot
  • spring-cloud-starter-oauth2
  • 集成Oauth2
  • Oauth2 客户端

介绍

这里我将介绍两个部分

  • Oauth2 server 的开发 (hi-auth-web模块)
  • Oauth2 client 的开发 (hi-mall-web模块)

效果图

umc.gif

LIVE DEMO

HiMall: http://hiauth.cn/himall

UMC: http://hiauth.cn/umc

Swagger2:http://hiauth.cn/hiauth/swagger-ui.html

Oauth2 server 搭建

数据库表(mysql5.6),其中只有sys_user表由我们自己控制,其他表由框架控制

CREATE TABLE `clientdetails` (
 `appId` varchar(255) NOT NULL,
 `resourceIds` varchar(256) DEFAULT NULL,
 `appSecret` varchar(256) DEFAULT NULL,
 `scope` varchar(256) DEFAULT NULL,
 `grantTypes` varchar(256) DEFAULT NULL,
 `redirectUrl` varchar(256) DEFAULT NULL,
 `authorities` varchar(256) DEFAULT NULL,
 `access_token_validity` int(11) DEFAULT NULL,
 `refresh_token_validity` int(11) DEFAULT NULL,
 `additionalInformation` varchar(4096) DEFAULT NULL,
 `autoApproveScopes` varchar(256) DEFAULT NULL,
 PRIMARY KEY (`appId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `oauth_access_token` (
 `token_id` varchar(256) DEFAULT NULL,
 `token` blob,
 `authentication_id` varchar(255) NOT NULL,
 `user_name` varchar(256) DEFAULT NULL,
 `client_id` varchar(256) DEFAULT NULL,
 `authentication` blob,
 `refresh_token` varchar(256) DEFAULT NULL,
 PRIMARY KEY (`authentication_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `oauth_approvals` (
 `userId` varchar(256) DEFAULT NULL,
 `clientId` varchar(256) DEFAULT NULL,
 `scope` varchar(256) DEFAULT NULL,
 `status` varchar(10) DEFAULT NULL,
 `expiresAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `lastModifiedAt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<span>本文来源gaodai#ma#com搞*!代#%^码$网*</span>
CREATE TABLE `oauth_client_details` (
 `client_id` varchar(255) NOT NULL,
 `resource_ids` varchar(256) DEFAULT NULL,
 `client_secret` varchar(256) DEFAULT NULL,
 `scope` varchar(256) DEFAULT NULL,
 `authorized_grant_types` varchar(256) DEFAULT NULL,
 `web_server_redirect_uri` varchar(2560) DEFAULT NULL,
 `authorities` varchar(256) DEFAULT NULL,
 `access_token_validity` int(11) DEFAULT NULL,
 `refresh_token_validity` int(11) DEFAULT NULL,
 `additional_information` varchar(4096) DEFAULT NULL,
 `autoapprove` varchar(256) DEFAULT NULL,
 PRIMARY KEY (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `oauth_client_details` VALUES ('client', null, '$2a$10$1N/.LvTJuYpvxDzoJ1KdvuPDdV/kDSQE9Cxm9BzB1PreyzK6gmFRe', 'ALL,AUTH,USER,GOODS,ORDER', 'authorization_code,client_credentials,password,refresh_token', 'http://localhost:8081/mall/callback,http://localhost:9080/user/webjars/springfox-swagger-ui/oauth2-redirect.html,http://localhost:9081/goods/webjars/springfox-swagger-ui/oauth2-redirect.html,http://localhost:9082/order/webjars/springfox-swagger-ui/oauth2-redirect.html,http://localhost/user/webjars/springfox-swagger-ui/oauth2-redirect.html,http://localhost/goods/webjars/springfox-swagger-ui/oauth2-redirect.html,http://localhost/order/webjars/springfox-swagger-ui/oauth2-redirect.html', 'ROLE_USER', '1800', '86400', null, 'false');

CREATE TABLE `oauth_client_token` (
 `token_id` varchar(256) DEFAULT NULL,
 `token` blob,
 `authentication_id` varchar(255) NOT NULL,
 `user_name` varchar(256) DEFAULT NULL,
 `client_id` varchar(256) DEFAULT NULL,
 PRIMARY KEY (`authentication_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `oauth_code` (
 `code` varchar(256) DEFAULT NULL,
 `authentication` blob
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `oauth_refresh_token` (
 `token_id` varchar(256) DEFAULT NULL,
 `token` blob,
 `authentication` blob
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `sys_user` (
 `id` bigint(20) NOT NULL,
 `name` varchar(20) DEFAULT NULL,
 `username` varchar(20) NOT NULL,
 `password` varchar(128) NOT NULL,
 `tel` varchar(20) DEFAULT NULL,
 `gender` varchar(10) DEFAULT NULL,
 `createTime` datetime DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `unique_username` (`username`),
 UNIQUE KEY `unique_tel` (`tel`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `sys_user` VALUES ('1', '张三', 'admin', '123456', '13712345678', 'MALE', '2018-12-03 17:57:12');
INSERT INTO `sys_user` VALUES ('2', '李四', 'user', '123456', '13812345678', 'UNKNOWN', '2018-12-03 17:57:12');


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解Springboot Oauth2 Server搭建Oauth2认证服务

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址