点击关注公众号,实用技术文章随时了解最新 前言 为什么使用spring-授权服务器? 真正原因:本来是因为个人原因需要研究新版本的认证服务。我看到了spring-authorization-server。在使用过程中我就在想是否可以集成新版本的cloud,所以这里就开始了。使用springboot构建spring-authorization-server,然后替换为springcloud2021。 官方原因:Spring安全OAuth最初使用,该项目已逐渐淘汰。虽然网上这样的解决方案还是很多的,但是技术要与时俱进,所以使用spring-authorization-server Spring团队正式宣布Spring Security OAuth将停止维护,项目不再进行任何迭代 项目建设 使用springboot构建spring-authorization-server(即认证和资源服务器) 数据库相关表结构搭建 需要创建3张表,sql如下创建 表 `oauth2_authorization` ( `id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `registered_client_id` varchar(100) 字符 SET utf8mb4 COLLATEut f8mb4_unicode_ci NOT NULL, `主体名称` varchar(200) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `authorization_grant_type` varchar(100) 字符 设置 utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `属性` varchar(4000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `状态` varchar(500) 字符 SET utf8mb4 整理 utf8mb4_unicode_ciNULL 默认 NULL, `授权代码值` 斑点 NULL, `授权代码发布_at` 时间戳(0) NULL 默认 NULL, `authorization_code_expires_at` 时间戳(0) NULL 默认 NULL , `授权代码_元数据` varchar(2000) 字符 SET utf8mb4 COLLATEut f8mb4_unicode_ci NULL 默认 NULL, `access_token_value` blob NULL, `access_token_issued_at` 时间戳(0) NULL 默认 NULL, `access_token_expires_at` 时间戳(0) NULL DEFAULT NULL, `access_token_metadata ` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `access_token_type` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `access_token_scopes` varchar( 1000) 角色 设置 utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `oidc_id_token_value` blob NULL, `oidc_id_token_issued_at` 时间戳(0) NULL 默认 NULL, `oidc_id_token_expires_at` 时间戳(0) NULL 默认 NULL , `oidc_id_token_metadata` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `refresh_token_value` 斑点 NULL, `refresh_token_issued_at` 时间戳(0) NULL 默认 NULL, `refresh_token_expires_at` 时间戳(0) NULL 默认 NULL, `refresh_token_metadata ` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, 主KEY (`id`) 使用BTREE)引擎 = InnoDB 字符 SET = utf8mb4 整理 = utf8mb4_unicode_ci ROW_FORMAT = 动态; CREATE 表 `oauth2_authorization_consent` ( `registered_client_id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `主体名称` varchar (200) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `权威机构` varchar(1000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, 主KEY( `registered_client_id`, `principal_name`) 使用 BTREE) 引擎 = InnoDB 字符 SET = utf8mb4 整理 = utf8mb4_unicode_ci ROW_FORMAT = 动态; 创建 TABLE `oauth2_registered_client` ( `id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOTNULL , `client_id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `client_id_issued_at` 时间戳( 0) NOT NULL 默认 当前_时间戳(0), `client_secret` varchar(200) 字符 SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFA ULT NULL,`client_secret_expires_at` 时间戳(0) NULL 默认 NULL, ` client_name` varchar(200) CHARACTER SET utf8mb4 整理 utf8mb4_unicode_ci 不 NULL, `client_authentication_methods` varchar(1000) CHARACTER SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `authorization_grant_types` varchar(1000) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOTNULL, `redirect_uris` varchar(1000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `范围` varchar(1000) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `client_settings` varchar(2000) 角色 SETutf8mb4COLLATEutf8mb4_unicode_ciNOTNULL ,`token_settings`varchar( 2000) 字符 设置 utf8mb4 整理utf8mb4_unicode_ci NOT NULL, 主要 密钥 (`id`) 使用 BTREE) 引擎 = InnoDB字符 设置 = UTF8MB4 整理 = UTF8MB4_UNICODE_CI ROW_FORMAT = 动态; pom.xml 引入依赖项
真正原因:本来是因为个人原因需要研究新版本的认证服务。我看到了spring-authorization-server。在使用过程中我就在想是否可以集成新版本的cloud,所以这里就开始了。使用springboot构建spring-authorization-server,然后替换为springcloud2021。
spring-authorization-server
官方原因:Spring安全OAuth最初使用,该项目已逐渐淘汰。虽然网上这样的解决方案还是很多的,但是技术要与时俱进,所以使用spring-authorization-server
Spring安全OAuth
Spring团队正式宣布Spring Security OAuth将停止维护,项目不再进行任何迭代
Spring Security OAuth
需要创建3张表,sql如下
创建 表 `oauth2_authorization` ( `id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `registered_client_id` varchar(100) 字符 SET utf8mb4 COLLATEut f8mb4_unicode_ci NOT NULL, `主体名称` varchar(200) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `authorization_grant_type` varchar(100) 字符 设置 utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `属性` varchar(4000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `状态` varchar(500) 字符 SET utf8mb4 整理 utf8mb4_unicode_ciNULL 默认 NULL, `授权代码值` 斑点 NULL, `授权代码发布_at` 时间戳(0) NULL 默认 NULL, `authorization_code_expires_at` 时间戳(0) NULL 默认 NULL , `授权代码_元数据` varchar(2000) 字符 SET utf8mb4 COLLATEut f8mb4_unicode_ci NULL 默认 NULL, `access_token_value` blob NULL, `access_token_issued_at` 时间戳(0) NULL 默认 NULL, `access_token_expires_at` 时间戳(0) NULL DEFAULT NULL, `access_token_metadata ` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `access_token_type` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `access_token_scopes` varchar( 1000) 角色 设置 utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `oidc_id_token_value` blob NULL, `oidc_id_token_issued_at` 时间戳(0) NULL 默认 NULL, `oidc_id_token_expires_at` 时间戳(0) NULL 默认 NULL , `oidc_id_token_metadata` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `refresh_token_value` 斑点 NULL, `refresh_token_issued_at` 时间戳(0) NULL 默认 NULL, `refresh_token_expires_at` 时间戳(0) NULL 默认 NULL, `refresh_token_metadata ` varchar(2000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, 主KEY (`id`) 使用BTREE)引擎 = InnoDB 字符 SET = utf8mb4 整理 = utf8mb4_unicode_ci ROW_FORMAT = 动态; CREATE 表 `oauth2_authorization_consent` ( `registered_client_id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `主体名称` varchar (200) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `权威机构` varchar(1000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, 主KEY( `registered_client_id`, `principal_name`) 使用 BTREE) 引擎 = InnoDB 字符 SET = utf8mb4 整理 = utf8mb4_unicode_ci ROW_FORMAT = 动态; 创建 TABLE `oauth2_registered_client` ( `id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOTNULL , `client_id` varchar(100) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `client_id_issued_at` 时间戳( 0) NOT NULL 默认 当前_时间戳(0), `client_secret` varchar(200) 字符 SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFA ULT NULL,`client_secret_expires_at` 时间戳(0) NULL 默认 NULL, ` client_name` varchar(200) CHARACTER SET utf8mb4 整理 utf8mb4_unicode_ci 不 NULL, `client_authentication_methods` varchar(1000) CHARACTER SET utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `authorization_grant_types` varchar(1000) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOTNULL, `redirect_uris` varchar(1000) 字符 SET utf8mb4 整理 utf8mb4_unicode_ci NULL 默认 NULL, `范围` varchar(1000) 字符 设置 utf8mb4 整理 utf8mb4_unicode_ci NOT NULL, `client_settings` varchar(2000) 角色 SETutf8mb4COLLATEutf8mb4_unicode_ciNOTNULL ,`token_settings`varchar( 2000) 字符 设置 utf8mb4 整理utf8mb4_unicode_ci NOT NULL, 主要 密钥 (`id`) 使用 BTREE) 引擎 = InnoDB字符 设置 = UTF8MB4 整理 = UTF8MB4_UNICODE_CI ROW_FORMAT = 动态; pom.xml 引入依赖项
pom.xml 引入依赖项