配置参数列表

    ApiBoot在整合SpringSecurityOauth2时把配置参数进行了分离,配置列表如下所示:

    整合SpringSecurity配置列表

    整合Oauth2配置列表

    配置名称介绍默认值绑定away
    api.boot.oauth.awayOauth存储Token、读取Client信息方式memoryall
    api.boot.oauth.cleint-idOauth2 Client IDApiBootmemory
    api.boot.oauth.client-secretOauth2 Client SecretApiBootSecretmemory
    api.boot.oauth.grant-types客户端授权方式Srtring[]{"password"}memory
    api.boot.oauth.scopes客户端作用域String[]{"api"}memory
    api.boot.oauth.jwt.enable是否启用JWT格式化AccessTokenfalsememory/jdbc
    api.boot.oauth.jwt.sign-key使用JWT格式化AccessToken时的签名ApiBootmemory/jdbc

    ApiBoot在整合、Oauth2时配置进行了分离,也就意味着我们可以让SpringSecurity读取内存用户、Oauth2将生成的AccessToken存放到数据库,当然反过来也是可以的,相互不影响!!!

    Spring Security

    ApiBoot在整合Spring Security的内存方式时,仅仅需要配置api.boot.security.users用户列表参数即可,就是这么的简单,

    配置用户示例如下所示:

    1. api:
    2. boot:
    3. security:
    4. # Spring Security 内存方式用户列表示例
    5. users:
    6. - username: hengboy
    7. password: 123456
    8. - username: apiboot
    9. password: abc321

    api.boot.security.users是一个List<SecurityUser>类型的集合,所以这里可以配置多个用户。

    Oauth2

    Jdbc方式

    Spring Security

    默认用户表

    ApiBoot在整合Spring Security的Jdbc方式时,在使用ApiBoot提供的默认结构用户表时只需要修改api.boot.security.away: jdbc即可,ApiBoot提供的用户表结构如下所示:

    自定义用户表

    如果你的系统已经存在了自定义用户表结构,ApiBoot是支持的,而且很简单就可以完成整合,我们需要先修改api.boot.security.enable-default-store-delegate参数为false,如下所示:

    1. api:
    2. security:
    3. # Spring Security jdbc方式用户列表示例
    4. enable-default-store-delegate: false
    5. away: jdbc

    添加接口实现类,如下所示:

    Oauth2

    创建Oauth所需表结构

    Oauth2如果使用Jdbc方式进行存储access_tokenclient_details时,需要在数据库内初始化Oauth2所需相关表结构,

    添加客户端数据

    初始化Oauth2表结构后,需要向oauth_client_details表内添加一个客户端信息,下面是对应ApiBoot Security Oauth配置信息的数据初始化,如下所示:

    1. INSERT INTO `oauth_client_details` VALUES ('ApiBoot','api','$2a$10$M5t8t1fHatAj949RCHHB/.j1mrNAbxIz.mOYJQbMCcSPwnBMJLmMK','api','password',NULL,NULL,7200,7200,NULL,NULL);

    在上面memory/jdbc两种方式已经配置完成,接下来我们就可以获取access_token

    通过CURL获取

    启用JWT

    1. api:
    2. boot:
    3. oauth:
    4. jwt:
    5. # 开启Jwt转换AccessToken
    6. enable: true
    7. sign-key: 恒宇少年 - 于起宇

    默认不启用JWT,签名建议进行更换。