OAuth2客户端认证方式,你熟悉吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计661个文字,预计阅读时间需要3分钟。
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_jwtclient_secret_jwt方式是OAuth2客户端将自己的密钥作为HmacSHA256算法的key生成SecretKey:
byte[] pin = clientSecret.getBytes(StandardCharsets.UTF_8);
SecretKeySpec secretKey = new SecretKeySpec(pin,"HmacSHA256");
然后通过SecretKey生成一个携带OAuth2客户端信息的JWT,在授权码请求Token环节携带该JWT以便授权服务器进行客户端认证,请求的报文为:
本文共计661个文字,预计阅读时间需要3分钟。
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_jwtclient_secret_jwt方式是OAuth2客户端将自己的密钥作为HmacSHA256算法的key生成SecretKey:
byte[] pin = clientSecret.getBytes(StandardCharsets.UTF_8);
SecretKeySpec secretKey = new SecretKeySpec(pin,"HmacSHA256");
然后通过SecretKey生成一个携带OAuth2客户端信息的JWT,在授权码请求Token环节携带该JWT以便授权服务器进行客户端认证,请求的报文为:

