当前位置: 首页 > news >正文

Spring Authorization Server 1.5.2 使用YML配置的方式,最常用法总结

OAuth2常用授权方式配置及使用

授权码模式(authorization_code)

授权码模式是最常用的OAuth2授权方式,适用于有后端的Web应用。用户通过浏览器重定向到授权服务器,授权后返回授权码,后端用授权码换取访问令牌。

配置步骤:

  • 在授权服务器注册客户端,配置回调地址(redirect_uri)。
  • 客户端需要提供client_id和client_secret。

使用流程:

  • 客户端引导用户访问授权端点,携带client_id、redirect_uri、response_type=code等参数。
  • 用户授权后,授权服务器重定向到回调地址,附带授权码。
  • 客户端后端用授权码、client_id、client_secret向令牌端点请求访问令牌。

示例请求授权码:

oidc-client:registration:client-id: "oidc-client"client-name: "oidc-client"client-secret: "{noop}artvqIe21qvqDlXE8LPGDxGctcgFCh06idXGBOc5Ed0"client-authentication-methods:- "client_secret_basic"- "client_secret_post"- "client_secret_jwt"- "private_key_jwt"- "tls_client_auth"- "self_signed_tls_client_auth"- "none"authorization-grant-types:- "authorization_code"- "refresh_token"redirect-uris:- "http://localhost:8080/login/oauth2/code/authcodeNone"- "http://localhost:8080/login/oauth2/code/authcodeBasic"- "http://localhost:8080/login/oauth2/code/authcodePost"- "http://localhost:8080/login/oauth2/code/secretJwt"- "http://localhost:8080/login/oauth2/code/privateJwt"post-logout-redirect-uris:- "http://127.0.0.1:8080/"scopes:- "openid"- "profile"require-authorization-consent: true#token-endpoint-authentication-signing-algorithm: HS256token-endpoint-authentication-signing-algorithm: RS256jwk-set-uri: http://localhost:8080/jwks

这里是在服务端注册了一个client,该client支持的授权方式为授权码方式,支持的认证方式有

多种:不同的方式的安全级别也不一样。

客户端模式(client_credentials)

客户端模式适用于机器对机器的场景,客户端直接用自己的凭证获取令牌,无需用户参与。

配置步骤:

  • 在授权服务器注册客户端,确保客户端有client_credentials权限。
  • 客户端需要妥善保管client_secret。

使用流程:

  • 客户端直接向令牌端点发送请求,携带client_id、client_secret和grant_type=client_credentials。

示例请求:

just-client:registration: client-id: "just-client"client-name: "just-client"client-secret: "artvqIe21qvqDlXE8LPGDxGctcgFCh06idXGBOc5Ed0"client-authentication-methods:- "client_secret_basic"- "client_secret_post"- "client_secret_jwt"- "private_key_jwt"authorization-grant-types:- "client_credentials"token-endpoint-authentication-signing-algorithm: RS256jwk-set-uri: http://localhost:8080/jwks

可以看到客户模式也是支持多种认证方式,尤其是client_secret_jwt和private_key_jwt,这让认证

更加安全。

注意事项
  • 授权码模式需要妥善处理回调地址,避免开放重定向漏洞。
  • 客户端模式不应在前端使用,避免泄露client_secret。
  • JWT Bearer模式需要确保JWT的签名安全,防止篡改。
  • 所有模式都应使用HTTPS保证通信安全。
  • 令牌应有合理有效期,必要时使用刷新令牌(refresh_token)机制。

OAuth2常用授权方式配置及使用

授权码模式(authorization_code)

授权码模式是最常用的OAuth2授权方式,适用于有后端的Web应用。用户通过浏览器重定向到授权服务器,授权后返回授权码,后端用授权码换取访问令牌。

配置步骤:

  • 在授权服务器注册客户端,配置回调地址(redirect_uri)。
  • 客户端需要提供client_id和client_secret。

使用流程:

  • 客户端引导用户访问授权端点,携带client_id、redirect_uri、response_type=code等参数。
  • 用户授权后,授权服务器重定向到回调地址,附带授权码。
  • 客户端后端用授权码、client_id、client_secret向令牌端点请求访问令牌。

示例请求授权码:

GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=read&state=STATE HTTP/1.1
Host: auth-server.com

示例换取令牌:

POST /token HTTP/1.1
Host: auth-server.com
Content-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

客户端模式(client_credentials)

客户端模式适用于机器对机器的场景,客户端直接用自己的凭证获取令牌,无需用户参与。

配置步骤:

  • 在授权服务器注册客户端,确保客户端有client_credentials权限。
  • 客户端需要妥善保管client_secret。

使用流程:

  • 客户端直接向令牌端点发送请求,携带client_id、client_secret和grant_type=client_credentials。

示例请求:

POST /token HTTP/1.1
Host: auth-server.com
Content-Type: application/x-www-form-urlencodedgrant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

注意事项
  • 授权码模式需要妥善处理回调地址,避免开放重定向漏洞。
  • 客户端模式不应在前端使用,避免泄露client_secret。
  • JWT Bearer模式需要确保JWT的签名安全,防止篡改。
  • 所有模式都应使用HTTPS保证通信安全。
  • 令牌应有合理有效期,必要时使用刷新令牌(refresh_token)机制。

OAuth2常用授权方式配置及使用

授权码模式(authorization_code)

授权码模式是最常用的OAuth2授权方式,适用于有后端的Web应用。用户通过浏览器重定向到授权服务器,授权后返回授权码,后端用授权码换取访问令牌。

配置步骤:

  • 在授权服务器注册客户端,配置回调地址(redirect_uri)。
  • 客户端需要提供client_id和client_secret。

使用流程:

  • 客户端引导用户访问授权端点,携带client_id、redirect_uri、response_type=code等参数。
  • 用户授权后,授权服务器重定向到回调地址,附带授权码。
  • 客户端后端用授权码、client_id、client_secret向令牌端点请求访问令牌。

示例请求授权码:

GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=read&state=STATE HTTP/1.1
Host: auth-server.com

示例换取令牌:

POST /token HTTP/1.1
Host: auth-server.com
Content-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

客户端模式(client_credentials)

客户端模式适用于机器对机器的场景,客户端直接用自己的凭证获取令牌,无需用户参与。

配置步骤:

  • 在授权服务器注册客户端,确保客户端有client_credentials权限。
  • 客户端需要妥善保管client_secret。

使用流程:

  • 客户端直接向令牌端点发送请求,携带client_id、client_secret和grant_type=client_credentials。

示例请求:

POST /token HTTP/1.1
Host: auth-server.com
Content-Type: application/x-www-form-urlencodedgrant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

JWT Bearer模式

JWT Bearer模式允许客户端使用JWT作为授权断言来获取访问令牌,适用于已有身份验证机制的系统集成。

配置步骤:

  • 在授权服务器注册客户端,配置JWT签名验证的公钥或密钥。
  • 客户端需要生成符合要求的JWT,包含iss、sub、aud、exp等声明。

使用流程:

  • 客户端生成JWT,使用私钥签名。
  • 向令牌端点发送请求,携带grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer和assertion参数(JWT)。

示例JWT内容:

{"iss": "client_id","sub": "client_id","aud": "https://auth-server.com/token","exp": 1625097600,"iat": 1625094000
}

示例请求:

POST /token HTTP/1.1
Host: auth-server.com
Content-Type: application/x-www-form-urlencodedgrant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=JWT_TOKEN

注意事项
  • 授权码模式需要妥善处理回调地址,避免开放重定向漏洞。
  • 客户端模式不应在前端使用,避免泄露client_secret。
  • JWT Bearer模式需要确保JWT的签名安全,防止篡改。
  • 所有模式都应使用HTTPS保证通信安全。
  • 令牌应有合理有效期,必要时使用刷新令牌(refresh_token)机制。

具体代码参考:Spring Authorization Server: Spring Authorization Server Demo 最佳实践 - Gitee.com

http://www.dtcms.com/a/365687.html

相关文章:

  • VAR的教师强制teacher forcing
  • Canaan 阿瓦隆 A1246I 81T矿机评测:性能、功耗与能效全面分析
  • 解锁产品说明书的“视觉密码”:多模态 RAG 与 GPT-4 的深度融合 (AI应用与技术系列)
  • 【收藏必备】大模型面试宝典:Transformer到实战应用全解析,助你斩获30W年薪offer!
  • Debezium日常分享系列之:Debezium 3.3.0.Alpha2发布
  • MySQL 行转列 (Pivot) 的 N 种实现方式:静态、动态与 GROUP_CONCAT 详解
  • C++入门小馆:C++11第一弹
  • 面试复习题-Flutter
  • https 协议与 wss 协议有什么不同
  • 详细教程:如何利用nslookup命令查询DNS解析状态?
  • 深度学习------模型的保存和使用
  • CSS 伪类与伪元素:深度解析
  • 大疆图传技术参数对比 你了解多少?
  • 2025高教社杯数模国赛【思路预约】
  • Mysql的锁退化
  • 虚拟机+ubuntu+docker+python部署,以及中途遇到的问题和解决方案
  • 计算机科学领域-CS基础
  • 信创MySQL到达梦数据库的SQL语法转换技术解析
  • 使用Java定时爬取CSDN博客并自动邮件推送
  • CPU和GPU的区别与作用域
  • prometheus+grafana搭建
  • 虚拟机NAT模式通过宿主机(Windows)上网不稳定解决办法(无法上网)(将宿主机设置固定ip并配置dns)
  • 【面试题】OOV(未登录词)问题如何解决?
  • Unity 枪械红点瞄准器计算
  • K8S 部署 NFS Dynamic Provisioning(动态存储供应)
  • Grafana可视化平台深度解析:选型、竞品、成本与资源消耗
  • SpringCloud整合分布式事务Seata
  • C语言(长期更新)第13讲:指针详解(三)
  • 毒蛇品种检测识别数据集:12个类别,6500+图像,全yolo标注
  • 印度股票数据API对接文档