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_jwtclient_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_jwtprivate_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 |
2022年及以后的四个数据中心提示出柜率、上架率、负载率,数据中心运营的三个重要指标,你知道吗?戴尔易安信加固过的机箱,保证在远程和恶劣环境下工作的可靠性,满足边缘工作负载不断增长的需求托管服务提供商的优势和长期机会身份安全成焦点:Palo Alto Networks拟以250亿美元收购CyberArk你的App每三分钟就会遭遇一次攻击戴尔PowerEdge服务器 可轻松满足AI深度学习和高级计算等工作负载以Ghost还原教程——如何恢复丢失的数据?(通过简单操作,轻松解决数据丢失问题)多款热门 Chrome 扩展程序存在明文传输风险,用户隐私安全受威胁企业通过谈判策略降低赎金支付的实战经验云服务器b2b信息平台企业服务器源码库香港物理机亿华云网站建设