diff --git a/README.md b/README.md index ec394ef..1ec021a 100644 --- a/README.md +++ b/README.md @@ -45,12 +45,12 @@ Base on Spring-Boot

版本分支介绍

-MySQL版本请访问Branch: master -
-MongoDB版本请访问Branch: mongodb -
-Redis版本请访问Branch: -config-redis +- MySQL版本请访问Branch: master + +- MongoDB版本请访问Branch: mongodb + +- Redis版本请访问Branch: config-redis +

相关项目

@@ -66,36 +66,28 @@ config-redis

如何使用?

-
    -
  1. -项目是Maven管理的, 需要本地安装maven(开发用的maven版本号为3.3.3), 还有MySql(开发用的mysql版本号为5.6) -
  2. -
  3. -下载(或clone)项目到本地 -
  4. -
  5. -创建MySQL数据库(如数据库名oauth2_boot), 并运行相应的SQL脚本(脚本文件位于others/database目录), + +1. 项目是Maven管理的, 需要本地安装Maven(开发用的maven版本号为3.6.0), 还有MySql(开发用的mysql版本号为5.7.22) + +2. 下载(或clone)项目源码到本地 + +3. 创建MySQL数据库(默认数据库名oauth2_boot), 并运行相应的SQL脚本(脚本文件位于others/database目录),
    - 运行脚本的顺序: initial_db.ddl -> oauth.ddl -> initial_data.ddl -
  6. -
  7. -修改application.properties(位于src/main/resources目录)中的数据库连接信息(包括username, password等) -
  8. -
  9. -将本地项目导入到IDE(如Intellij IDEA)中, 可直接运行SpringOauthServerApplication.java进行访问;或配置Tomcat(或类似的servlet运行服务器), 并启动Tomcat(默认端口为8080); + 运行脚本的顺序: initial_db.ddl -> oauth.ddl -> initial_data.ddl + +4. 修改application.properties(位于src/main/resources目录)中的数据库连接信息(包括username, password等) + +5. 将本地项目导入到IDE(如Intellij IDEA)中, 可直接运行SpringOauthServerApplication.java进行访问;或配置Tomcat(或类似的servlet运行服务器), 并启动Tomcat(默认端口为8080);
    - 也可通过maven package命令将项目编译为war文件(spring-oauth-server.war), - 将war放在Tomcat中并启动(注意: 这种方式需要将application.properties加入到classpath中并正确配置数据库连接信息). + 也可通过maven package命令将项目编译为jar文件(spring-oauth-server.jar), + 使用命令java -jar启动访问.
    - 若使用java -jar spring-oauth-server.war启动, 则需要使用参数spring.config.location指定配置文件, - 如:java -jar spring-oauth-server.war --spring.config.location=xxx.properties -
    - 提示:若打包为war则项目的 contextPath(根路径) 为 'spring-oauth-server'. -
  10. -
  11. -参考oauth_test.txt(位于others目录)的内容并测试之(也可在浏览器中访问相应的地址,如: http://localhost:8080/ 在界面上操作). -
  12. -
+ 若使用java -jar spring-oauth-server.jar启动, 建议使用参数spring.config.location指定配置文件, + 如:java -jar spring-oauth-server.jar --spring.config.location=xxx.properties + +6. 参考oauth_test.txt(位于others目录)的内容并测试之(也可在浏览器中访问相应的地址,如: http://localhost:8080/ 在界面上操作). + +

配置参数说明

@@ -117,24 +109,25 @@ config-redis

grant_type 介绍

-
-说明OAuth2支持的grant_type(授权方式)与功能 + +说明OAuth2.1支持的grant_type(授权方式)与功能
  1. authorization_code -- 授权码模式(即先登录获取code,再获取token)
  2. -
  3. password -- 密码模式(将用户名,密码传过去,直接获取token)
  4. +
  5. authorization_code + PKCE -- 授权码模式+PKCE (即先登录获取code, 请求时增加参数code_challengecode_challenge_method; 再获取token,增加参数code_verifier)
  6. +
  7. password -- 密码模式(将用户名,密码传过去,直接获取token) OAuth2.1不推荐使用
  8. refresh_token -- 刷新access_token
  9. -
  10. implicit -- 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)
  11. +
  12. device_code -- 适用于各类无输入键盘的物联网智能设备进行认证授权, 通过类似'扫码登录'形式完成整个流程 OAuth2.1新增
  13. client_credentials -- 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源)
- +> 注意:相比OAuth2.0,去掉了 **implicit** 模式

帮助与改进

  1. - 与该项目相关的博客请访问 http://blog.csdn.net/monkeyking1987/article/details/16828059 + 与该项目相关的博客请访问 https://blog.csdn.net/monkeyking1987/article/details/16828059

  2. @@ -167,23 +160,19 @@ config-redis 改变token过期的时间的配置, 请下载文件改变token过期的时间的配置.jpg
  3. - 自定义 grant_type, 默认情况支持的grant_type包括 [password,authorization_code,refresh_token,implicit], 若不需要其中的某些grant_type, + 自定义 grant_type, 默认情况支持的grant_type包括 [password,authorization_code,refresh_token,device_code], 若不需要其中的某些grant_type, 则可以修改 oauth_client_details 表中的 authorized_grant_types 字段的值; -
    - 若想把整个OAuth2服务修改来只支持某些grant_type, 请修改 security.xml文件中的 - 中的内容,将对应的 grant_type 注释或删掉即可
  4. 如何刷新access_token(refresh_token), 在通过客户端(如移动设备)登录成功后返回的数据如下
    -
    {"access_token":"3420d0e0-ed77-45e1-8370-2b55af0a62e8","token_type":"bearer","refresh_token":"b36f4978-a172-4aa8-af89-60f58abe3ba1","expires_in":43199,"scope":"read write"}
    +            
    {"access_token":"eyJraWQiOiJteW9pZGMta2V5aWQiLCJhbGciOiJSUzI1...","token_type":"bearer","refresh_token":"UCFNxUj4ytr241KzwJJgnMno1RfmoLs0GKVxNWPjW5VZ7d4U4YsDM7...","expires_in":43199,"scope":"openid"}
                 

    若需要刷新获取新的token(一般在 expires_in 有效期时间快到时), 请求的URL类似如下
    -
    http://localhost:8080/oauth/token?client_id=mobile-client&client_secret=mobile&grant_type=refresh_token&refresh_token=b36f4978-a172-4aa8-af89-60f58abe3ba1
    -            
    +
    http://localhost:8080/oauth2/token?client_id=mobile-client&client_secret=mobile&grant_type=refresh_token&refresh_token=UCFNxUj4ytr241KzwJJgnMno1RfmoLs0GKVxNWPjW5VZ7

    注意: refresh_token 参数值必须与登录成功后获取的 refresh_token 一致, 且grant_type = refresh_token
    @@ -203,14 +192,26 @@ config-redis
    • - Version: 2.1.1 [pending] + Version: 3.0.0 [pending] +
      + Date: 2023-10-10 / --- +

      +
        +
      1. 底层安全架构升级:jdk升级17, spring6.x, springboot3.x, thymeleaf替换servlet/jsp

      2. +
      3. 全面升级支持 OAuth2.1协议与 OIDC1.x协议

      4. +
      5. 构建包由war换成jar, SQL相应调整

      6. +
      7. 升级替换spring-security-oauth2, 详见背景说明

      8. +
      +
    • +
    • +

      + Version: 2.1.1 [canceled]
      Date: 2022-05-05 / ---

      1. 尝试升级替换spring-security-oauth2, 详见背景说明

      -
    • @@ -376,7 +377,7 @@ config-redis

      在0.3版本中添加了db_table_description.html文件(位于/others目录), 用来说明数据库脚本文件oauth.ddl中各表,各字段的用途及使用场合.
      - 也可在线访问http://andaily.com/spring-oauth-server/db_table_description.html. + 也可在线访问https://andaily.com/spring-oauth-server/db_table_description.html.

      @@ -405,6 +406,7 @@ config-redis
    • 2019-08-04 发布 2.0.1 版本

    • 2020-06-04 发布 2.0.2 版本

    • 2022-05-01 发布 2.1.0 版本

    • +
    • 2023-10-10 开发全新大版本 3.0.0 开发

@@ -415,12 +417,12 @@ config-redis
-

- 与项目相关的技术文章请访问 http://andaily.com/blog/?cat=19 (不断更新与OAuth2相关的文章) -

+ + 与项目相关的技术文章请访问 http://andaily.com/blog/?cat=19 (不断更新与OAuth2相关的文章) +
-

问答与讨论

+ 问答与讨论
与项目相关的,与OAuth2相关的问题与回答,以及各类讨论请访问
- http://andaily.com/blog/?dwqa-question_category=oauth + http://andaily.com/blog/?dwqa-question_category=oauth
@@ -516,7 +518,7 @@ config-redis

其他...

- 关注更多开源项目请访问 http://andaily.com/my_projects.html + 关注更多开源项目请访问 https://andaily.com/my_projects.html