你知道吗?OAuth2客户端有两种,认证方式有七种

  发布时间:2025-12-07 21:52:40   作者:玩站小弟   我要评论
OAuth2客户端按照它们与授权服务器进行安全认证的能力可以分为机密类型(Confidential)和公共类型(Public)。机密类型的自身会有个密码凭据,比如Web服务器后端程序;而公共类型则没有 。

OAuth2客户端按照它们与授权服务器进行安全认证的知道种认证方种能力可以分为机密类型(Confidential)和公共类型(Public)。

机密类型的户端自身会有个密码凭据,比如Web服务器后端程序;而公共类型则没有密码凭据 ,有两纯浏览器前端应用或者移动客户端应用大都属于这一种类型。知道种认证方种不管是户端哪一种,它们都有客户端ID(client_id)   。有两

OAuth2客户端认证

客户端在执行OAuth2授权的知道种认证方种敏感流程中(相关的流程有令牌请求、令牌自省请求 、户端令牌撤销请求)必须使用授权服务器进行客户端身份验证,有两确保客户端中途不会被调包。知道种认证方种

客户端认证方式

目前客户端认证的户端方式有以下几种 :

前面Gitee的服务器租用DEMO使用的是过时的POST方式;微信DEMO使用的是非OAuth2标准的方式;Spring Authorization Server目前相关的DEMO使用的是client_secret_basic方式。剩下的有两方式中client_secret_jwt和private_key_jwt用的比较多,这两种方式可以很好地保护客户端的知道种认证方种认证信息 ,安全性更高。模板下载户端Spring Security和Spring Authorization Server目前已经支持这两种方式 。有两

client_secret_jwt

client_secret_jwt方式是OAuth2客户端将自己的密钥作为HmacSHA256算法的key生成SecretKey:

复制byte[] pin = clientSecret.getBytes(StandardCharsets.UTF_8);

SecretKeySpec secretKey = new SecretKeySpec(pin,"HmacSHA256"); 1.2.

然后通过SecretKey生成一个携带OAuth2客户端信息的JWT,在授权码请求Token环节携带该JWT以便授权服务器进行客户端认证 ,请求的报文为:

复制 POST /oauth2/token HTTP/1.1

Host: oauth2_client.felord.cn

Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&

code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&

client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&

client_assertion=你的JWT1.2.3.4.5.6.7.8.

授权服务器收到请求后通过OAuth2客户端的client_secret对JWT进行解码校验以认证客户端 。这种方式能很好地保护client_secret在非HTTPS环境下的传输。

这里OAuth2客户端的密钥(client_secret)比特长度必须大于等于256 。

private_key_jwt

private_key_jwt和client_secret_jwt唯一的云计算区别就是生成JWT的方式不同 。通过这种方式 ,OAuth2客户端已经不需要client_secret,只需要配置一对RSA或者EC密钥,通过密钥来生成JWT ,另外还需要向授权服务器提供公钥 ,通常是一个jwkSetUrl 。该方式的细节已经在胖哥专栏[1]中JOSE规范[2]一文中进行过详细说明了 ,这里不再赘述 。这种方式让客户端的认证信息更加安全的传输 ,亿华云是我个人比较喜欢的方式。

tls_client_auth

这个比较高级,嵌入了TLS安全层,在HTTP协议级别来认证OAuth2客户端 ,它涉及的证书来自可信任的CA。这种方式基本脱离了应用层,是一种无侵入的方式。

self_signed_tls_client_auth

这个同样也是在TLS安全层 ,不过它使用了自签名的免费模板X.509证书 。

总结

市面上的教程大多只会提到过时的POST方式以及client_secret_basic和client_secret_post,对后面的五种很少涉及,胖哥会对private_key_jwt和client_secret_jwt详细的实现 ,详细请订阅我的Spring Security OAuth2专栏 。这些OAuth2客户端认证方式在不同的场景有不同的优势,你可以根据不同的安全级别选择不同的OAuth2客户端认证方式。建站模板

参考资料

[1]胖哥专栏: https://blog.csdn.net/qq_35067322/category_11691173.html

[2]JOSE规范: https://felord.blog.csdn.net/article/details/123540550

  • Tag:

相关文章

  • 游戏机黑客披露了“实际上无法修补”的PS4/PS5 漏洞

    知名的游戏机黑客 CTurt近日炮轰了PS4和PS5游戏机中一个“实际上无法修补”的漏洞,他详细说明了一种概念验证方法https://www.youtube.com/watch?v=GIl1mR0HL
    2025-12-07
  • 45% 的网络安全从业者因压力过大,考虑退出该行业

    Help Net Security 网站披露了 Deep Instinct 发布的第三版年度 SecOps 报告,报告重点关注了 1000 名高管和高级网络安全专业人员日益增长的压力。研究发现,45%
    2025-12-07
  • 云原生时代来临,云安全技术将何去何从?

    云原生理念经过几年的落地实践已经得到企业市场的广泛认可,成为企业数字化转型的必选项。基于云原生技术架构开发的软件产品和工具,也开始逐渐应用在企业的日常工作当中。随着云原生时代的正式到来,以CWPP、C
    2025-12-07
  • 恶意Chrome扩展影响140万用户

    McAfee研究人员发现了5个恶意Chrome浏览器扩展,影响超过140万用户。McAfee研究人员分析浏览器扩展发现了多个恶意Chrome扩展。除了提供扩展功能外,浏览器扩展还可以追踪用户浏览记录。
    2025-12-07
  • 网络钓鱼仍然是最主要的攻击方法

    众所周知,攻击者会仔细研究公司的网站和社交渠道。也许他们发现提到了即将举行的慈善活动。谁经营慈善事业?他们的电子邮件签名是什么样的?慈善机构标志的颜色和尺寸是什么?这种信息对攻击者来说是无价的。从那里
    2025-12-07
  • 全面落地DevSecOps,工商银行安全管控建设实践

    一、业界安全态势二、金融行业安全管控核心诉求与策略三、安全管控调研与实践思路四、未来展望一、业界安全态势首先从Log4j2的1个核弹级高危漏洞谈起,去年11月下旬,阿里云向Apache官方报告了Apa
    2025-12-07

最新评论