成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ApiBoot - ApiBoot Security Oauth 依賴使用文檔

Tonny / 951人閱讀

摘要:如果全部使用默認(rèn)值的情況話不需要做任何配置方式前提項(xiàng)目需要添加數(shù)據(jù)源依賴。獲取通過獲取啟用在使用格式化時(shí)非常簡單的,配置如下所示開啟轉(zhuǎn)換轉(zhuǎn)換時(shí)所需加密,默認(rèn)為恒宇少年于起宇默認(rèn)不啟用,簽名建議進(jìn)行更換。

ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。

引入 ApiBoot Security Oauth

pom.xml配置文件內(nèi)添加如下:



    org.minbox.framework
    api-boot-starter-security-oauth-jwt
ApiBoot所提供的依賴都不需要添加版本號(hào),但是需要添加版本依賴,具體查看ApiBoot版本依賴
配置參數(shù)列表

ApiBoot在整合SpringSecurity、Oauth2時(shí)把配置參數(shù)進(jìn)行了分離,配置列表如下所示:

整合SpringSecurity配置列表
配置名稱 介紹 默認(rèn)值 生效方式
api.boot.security.away SpringSecurity讀取用戶的方式,默認(rèn)為內(nèi)存方式 memory all
api.boot.security.auth-prefix 攔截的接口路徑前綴,如:/api/users就會(huì)被默認(rèn)攔截 /api/** memory/jdbc
api.boot.security.users 配置用戶列表,具體使用查看內(nèi)存方式介紹 memory
api.boot.security.ignoring-urls Spring Security所排除的路徑,默認(rèn)排除Swagger、Actuator相關(guān)路徑前綴 /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
整合Oauth2配置列表
配置名稱 介紹 默認(rèn)值 綁定away
api.boot.oauth.away Oauth存儲(chǔ)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 客戶端授權(quán)方式 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時(shí)的簽名 ApiBoot memory/jdbc

ApiBoot在整合SpringSecurity、Oauth2時(shí)配置進(jìn)行了分離,也就意味著我們可以讓SpringSecurity讀取內(nèi)存用戶、Oauth2將生成的AccessToken存放到數(shù)據(jù)庫,當(dāng)然反過來也是可以的,相互不影響?。?!

內(nèi)存方式(默認(rèn)方式) Spring Security

ApiBoot在整合Spring Security的內(nèi)存方式時(shí),僅僅需要配置api.boot.security.users用戶列表參數(shù)即可,就是這么的簡單,

配置用戶示例如下所示:

api:
  boot:
    security:
      # Spring Security 內(nèi)存方式用戶列表示例
      users:
        - username: hengboy
          password: 123456
        - username: apiboot
          password: abc321

api.boot.security.users是一個(gè)List類型的集合,所以這里可以配置多個(gè)用戶。

Oauth2

如果全部使用默認(rèn)值的情況話不需要做任何配置!??!

Jdbc方式
前提:項(xiàng)目需要添加數(shù)據(jù)源依賴。
Spring Security

默認(rèn)用戶表

ApiBoot在整合Spring Security的Jdbc方式時(shí),在使用ApiBoot提供的默認(rèn)結(jié)構(gòu)用戶表時(shí)只需要修改api.boot.security.away: jdbc即可,ApiBoot提供的用戶表結(jié)構(gòu)如下所示:

CREATE TABLE `api_boot_user_info` (
  `UI_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT "用戶編號(hào),主鍵自增",
  `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 "用戶創(chuàng)建時(shí)間",
  PRIMARY KEY (`UI_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT="ApiBoot默認(rèn)的用戶信息表";

自定義用戶表

如果你的系統(tǒng)已經(jīng)存在了自定義用戶表結(jié)構(gòu),ApiBoot是支持的,而且很簡單就可以完成整合,我們需要先修改api.boot.security.enable-default-store-delegate參數(shù)為false,如下所示:

api:
  boot:
    security:
      # Spring Security jdbc方式用戶列表示例
      enable-default-store-delegate: false
      away: jdbc

添加ApiBootStoreDelegate接口實(shí)現(xiàn)類,如下所示:

@Component
public class DisableDefaultUserTableStoreDelegate implements ApiBootStoreDelegate {

    @Autowired
    private PasswordEncoder passwordEncoder;

    /**
     * 用戶列表示例
     * 從該集合內(nèi)讀取用戶信息
     * 可以使用集合內(nèi)的用戶獲取access_token
     */
    static List users = new ArrayList() {
        {
            add("api-boot");
            add("hengboy");
            add("yuqiyu");
        }
    };

    /**
     * 根據(jù)用戶名查詢用戶信息
     *
     * @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 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;
        }
    }
}

根據(jù)上面代碼示例,我們可以通過users用戶列表進(jìn)行訪問獲取access_token。

Oauth2

創(chuàng)建Oauth所需表結(jié)構(gòu)

Oauth2如果使用Jdbc方式進(jìn)行存儲(chǔ)access_tokenclient_details時(shí),需要在數(shù)據(jù)庫內(nèi)初始化Oauth2所需相關(guān)表結(jié)構(gòu),oauth-mysql.sql

添加客戶端數(shù)據(jù)

初始化Oauth2表結(jié)構(gòu)后,需要向oauth_client_details表內(nèi)添加一個(gè)客戶端信息,下面是對應(yīng)ApiBoot Security Oauth配置信息的數(shù)據(jù)初始化,如下所示:

INSERT INTO `oauth_client_details` VALUES ("ApiBoot","api","$2a$10$M5t8t1fHatAj949RCHHB/.j1mrNAbxIz.mOYJQbMCcSPwnBMJLmMK","api","password",NULL,NULL,7200,7200,NULL,NULL);
AppSecret加密方式統(tǒng)一使用BCryptPasswordEncoder,數(shù)據(jù)初始化時(shí)需要注意。

在上面memory/jdbc兩種方式已經(jīng)配置完成,接下來我們就可以獲取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時(shí)非常簡單的,配置如下所示:

api:
  boot:
    oauth:
      jwt:
        # 開啟Jwt轉(zhuǎn)換AccessToken
        enable: true
        # 轉(zhuǎn)換Jwt時(shí)所需加密key,默認(rèn)為ApiBoot
        sign-key: 恒宇少年 - 于起宇

默認(rèn)不啟用JWTsign-key簽名建議進(jìn)行更換。

本章源碼地址:https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-security-oauth-jwt

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74053.html

相關(guān)文章

  • ApiBoot - ApiBoot Swagger 使用文檔

    摘要:相關(guān)配置配置參數(shù)參數(shù)介紹默認(rèn)值是否啟用文檔標(biāo)題快速集成文檔文檔描述通過自動(dòng)化配置快速集成文檔,僅需一個(gè)注解一個(gè)依賴即可。注意通過所獲取的類型都為。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...

    yuanxin 評論0 收藏0
  • ApiBoot 2.0.4.RELEASE版本發(fā)布

    摘要:是一款基于的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。通過在我的SpringBoot系列教程中得到的...

    JellyBool 評論0 收藏0
  • ApiBoot DataSource Switch 使用文檔

    摘要:顧名思義,是用于數(shù)據(jù)源選擇切換的框架,這是一款基于切面指定注解實(shí)現(xiàn)的,通過簡單的數(shù)據(jù)源注解配置就可以完成訪問時(shí)的自動(dòng)切換,切換過程中是線程安全的。注意事項(xiàng)在使用時(shí)需要添加對應(yīng)數(shù)據(jù)庫的依賴如果使用連接池,不要配置使用的依賴,請使用依賴。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,...

    AdolphLWQ 評論0 收藏0
  • ApiBoot - ApiBoot Http Converter 使用文檔

    摘要:如下所示不配置默認(rèn)使用自定義是的概念,用于自定義轉(zhuǎn)換實(shí)現(xiàn),比如自定義格式化日期自動(dòng)截取小數(shù)點(diǎn)等。下面提供一個(gè)的簡單示例,具體的使用請參考官方文檔。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...

    dance 評論0 收藏0
  • ApiBoot - ApiBoot Resource Load 使用文檔

    摘要:注意如果你的方法返回對象只有一個(gè)資源對象需要映射,可以單獨(dú)配置使用注解。集合資源加載返回值為集合的示例類型作為返回值時(shí),其中注意必須是對象類型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款資源與業(yè)務(wù)完全分離的基礎(chǔ)框架,可以整合微服務(wù)(Feign、OpenFeign)進(jìn)行負(fù)載均衡讀取固定類型、固定所屬業(yè)...

    diabloneo 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<