摘要:如果全部使用默認值的情況話不需要做任何配置方式前提項目需要添加數據源依賴。獲取通過獲取啟用在使用格式化時非常簡單的,配置如下所示開啟轉換轉換時所需加密,默認為恒宇少年于起宇默認不啟用,簽名建議進行更換。
ApiBoot是一款基于SpringBoot1.x,2.x的接口服務集成基礎框架, 內部提供了框架的封裝集成、使用擴展、自動化完成配置,讓接口開發者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大的提高開發效率。
引入 ApiBoot Security Oauth在pom.xml配置文件內添加如下:
org.minbox.framework api-boot-starter-security-oauth-jwt
ApiBoot所提供的依賴都不需要添加版本號,但是需要添加版本依賴,具體查看ApiBoot版本依賴配置參數列表
ApiBoot在整合SpringSecurity、Oauth2時把配置參數進行了分離,配置列表如下所示:
整合SpringSecurity配置列表配置名稱 | 介紹 | 默認值 | 生效方式 |
---|---|---|---|
api.boot.security.away | SpringSecurity讀取用戶的方式,默認為內存方式 | memory | all |
api.boot.security.auth-prefix | 攔截的接口路徑前綴,如:/api/users就會被默認攔截 | /api/** | memory/jdbc |
api.boot.security.users | 配置用戶列表,具體使用查看內存方式介紹 | 無 | memory |
api.boot.security.ignoring-urls | Spring Security所排除的路徑,默認排除Swagger、Actuator相關路徑前綴 | /v2/api-docs /swagger-ui.html /swagger-resources/configuration/security /META-INF/resources/webjars/ /swagger-resources /swagger-resources/configuration/ui /actuator/ |
memory/jdbc |
api.boot.security.enable-default-store-delegate | 僅在Jdbc方式生效 | true | jdbc |
配置名稱 | 介紹 | 默認值 | 綁定away |
---|---|---|---|
api.boot.oauth.away | Oauth存儲Token、讀取Client信息方式 | memory | all |
api.boot.oauth.cleint-id | Oauth2 Client ID | ApiBoot | memory |
api.boot.oauth.client-secret | Oauth2 Client Secret | ApiBootSecret | memory |
api.boot.oauth.grant-types | 客戶端授權方式 | Srtring[]{"password"} | memory |
api.boot.oauth.scopes | 客戶端作用域 | String[]{"api"} | memory |
api.boot.oauth.jwt.enable | 是否啟用JWT格式化AccessToken | false | memory/jdbc |
api.boot.oauth.jwt.sign-key | 使用JWT格式化AccessToken時的簽名 | ApiBoot | memory/jdbc |
ApiBoot在整合SpringSecurity、Oauth2時配置進行了分離,也就意味著我們可以讓SpringSecurity讀取內存用戶、Oauth2將生成的AccessToken存放到數據庫,當然反過來也是可以的,相互不影響!!!
內存方式(默認方式) Spring SecurityApiBoot在整合Spring Security的內存方式時,僅僅需要配置api.boot.security.users用戶列表參數即可,就是這么的簡單,
配置用戶示例如下所示:
api: boot: security: # Spring Security 內存方式用戶列表示例 users: - username: hengboy password: 123456 - username: apiboot password: abc321
api.boot.security.users是一個List
如果全部使用默認值的情況話不需要做任何配置!!!
Jdbc方式前提:項目需要添加數據源依賴。Spring Security
默認用戶表
ApiBoot在整合Spring Security的Jdbc方式時,在使用ApiBoot提供的默認結構用戶表時只需要修改api.boot.security.away: jdbc即可,ApiBoot提供的用戶表結構如下所示:
CREATE TABLE `api_boot_user_info` ( `UI_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT "用戶編號,主鍵自增", `UI_USER_NAME` varchar(30) DEFAULT NULL COMMENT "用戶名", `UI_NICK_NAME` varchar(50) DEFAULT NULL COMMENT "用戶昵稱", `UI_PASSWORD` varchar(255) DEFAULT NULL COMMENT "用戶密碼", `UI_EMAIL` varchar(30) DEFAULT NULL COMMENT "用戶郵箱地址", `UI_AGE` int(11) DEFAULT NULL COMMENT "用戶年齡", `UI_ADDRESS` varchar(200) DEFAULT NULL COMMENT "用戶地址", `UI_IS_LOCKED` char(1) DEFAULT "N" COMMENT "是否鎖定", `UI_IS_ENABLED` char(1) DEFAULT "Y" COMMENT "是否啟用", `UI_STATUS` char(1) DEFAULT "O" COMMENT "O:正常,D:已刪除", `UI_CREATE_TIME` timestamp NULL DEFAULT current_timestamp() COMMENT "用戶創建時間", PRIMARY KEY (`UI_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT="ApiBoot默認的用戶信息表";
自定義用戶表
如果你的系統已經存在了自定義用戶表結構,ApiBoot是支持的,而且很簡單就可以完成整合,我們需要先修改api.boot.security.enable-default-store-delegate參數為false,如下所示:
api: boot: security: # Spring Security jdbc方式用戶列表示例 enable-default-store-delegate: false away: jdbc
添加ApiBootStoreDelegate接口實現類,如下所示:
@Component public class DisableDefaultUserTableStoreDelegate implements ApiBootStoreDelegate { @Autowired private PasswordEncoder passwordEncoder; /** * 用戶列表示例 * 從該集合內讀取用戶信息 * 可以使用集合內的用戶獲取access_token */ static Listusers = new ArrayList() { { add("api-boot"); add("hengboy"); add("yuqiyu"); } }; /** * 根據用戶名查詢用戶信息 * * @param username 用戶名 * @return * @throws UsernameNotFoundException */ @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { if (!users.contains(username)) { throw new UsernameNotFoundException("用戶:" + username + "不存在"); } return new DisableDefaultUserDetails(username); } @Data @AllArgsConstructor @NoArgsConstructor class DisableDefaultUserDetails implements UserDetails { private String username; @Override public Collection extends GrantedAuthority> getAuthorities() { return new ArrayList() { { add((GrantedAuthority) () -> "ROLE_USER"); } }; } /** * 示例密碼使用123456 * * @return */ @Override public String getPassword() { return passwordEncoder.encode("123456"); } @Override public String getUsername() { return username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } } }
根據上面代碼示例,我們可以通過users用戶列表進行訪問獲取access_token。
Oauth2創建Oauth所需表結構
Oauth2如果使用Jdbc方式進行存儲access_token、client_details時,需要在數據庫內初始化Oauth2所需相關表結構,oauth-mysql.sql
添加客戶端數據
初始化Oauth2表結構后,需要向oauth_client_details表內添加一個客戶端信息,下面是對應ApiBoot Security Oauth配置信息的數據初始化,如下所示:
INSERT INTO `oauth_client_details` VALUES ("ApiBoot","api","$2a$10$M5t8t1fHatAj949RCHHB/.j1mrNAbxIz.mOYJQbMCcSPwnBMJLmMK","api","password",NULL,NULL,7200,7200,NULL,NULL);
AppSecret加密方式統一使用BCryptPasswordEncoder,數據初始化時需要注意。
在上面memory/jdbc兩種方式已經配置完成,接下來我們就可以獲取access_token。
獲取AccessToken 通過CURL獲取? ~ curl ApiBoot:ApiBootSecret@localhost:8080/oauth/token -d "grant_type=password&username=api-boot&password=123456" {"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NTMxMDk1MjMsInVzZXJfbmFtZSI6ImFwaS1ib290IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjBmZTUyY2RlLTBhZjctNDI1YS04Njc2LTFkYTUyZTA0YzUxYiIsImNsaWVudF9pZCI6IkFwaUJvb3QiLCJzY29wZSI6WyJhcGkiXX0.ImqGZssbDEOmpf2lQZjLQsch4ukE0C4SCYJsutfwfx0","token_type":"bearer","expires_in":42821,"scope":"api","jti":"0fe52cde-0af7-425a-8676-1da52e04c51b"}啟用JWT
ApiBoot Security Oauth在使用JWT格式化access_token時非常簡單的,配置如下所示:
api: boot: oauth: jwt: # 開啟Jwt轉換AccessToken enable: true # 轉換Jwt時所需加密key,默認為ApiBoot sign-key: 恒宇少年 - 于起宇
默認不啟用JWT,sign-key簽名建議進行更換。
本章源碼地址:https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-security-oauth-jwt
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74053.html
摘要:相關配置配置參數參數介紹默認值是否啟用文檔標題快速集成文檔文檔描述通過自動化配置快速集成文檔,僅需一個注解一個依賴即可。注意通過所獲取的類型都為。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務集成基礎框架, 內部提供了框架的封裝集成、使用擴展、自動化完成配置,讓接口開發者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...
摘要:是一款基于的接口服務集成基礎框架,內部提供了框架的封裝集成,讓接口開發者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服務集成基礎框架,內部提供了框架的封裝集成,讓接口開發者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發效率。通過在我的SpringBoot系列教程中得到的...
摘要:顧名思義,是用于數據源選擇切換的框架,這是一款基于切面指定注解實現的,通過簡單的數據源注解配置就可以完成訪問時的自動切換,切換過程中是線程安全的。注意事項在使用時需要添加對應數據庫的依賴如果使用連接池,不要配置使用的依賴,請使用依賴。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務集成基礎框架, 內部提供了框架的封裝集成、使用擴展、自動化完成配置,...
摘要:如下所示不配置默認使用自定義是的概念,用于自定義轉換實現,比如自定義格式化日期自動截取小數點等。下面提供一個的簡單示例,具體的使用請參考官方文檔。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務集成基礎框架, 內部提供了框架的封裝集成、使用擴展、自動化完成配置,讓接口開發者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...
摘要:注意如果你的方法返回對象只有一個資源對象需要映射,可以單獨配置使用注解。集合資源加載返回值為集合的示例類型作為返回值時,其中注意必須是對象類型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款資源與業務完全分離的基礎框架,可以整合微服務(Feign、OpenFeign)進行負載均衡讀取固定類型、固定所屬業...
閱讀 1367·2021-09-10 10:51
閱讀 2834·2019-08-30 15:54
閱讀 3374·2019-08-29 17:11
閱讀 935·2019-08-29 16:44
閱讀 1396·2019-08-29 13:47
閱讀 1093·2019-08-29 13:47
閱讀 1493·2019-08-29 12:23
閱讀 1048·2019-08-28 18:18