Open bxb100 opened 1 year ago
全文摘抄 https://darutk.medium.com/oauth-2-0-client-authentication-4b5f929305d4
OAuth 对资源所有者和用户来说是授权协议, 不是验证协议
(OIDC Core, 9. Client Authentication)
传统的方式中, 授权服务器提前给与客户端一对 ID 和 Secrect
ID
Secrect
然后再发送 POST 请求 token 的时候附加这对信息
在获取 token 请求中包含 ID 和 Secret 使用 Basic Authentication (RFC 7617)
Secret
首先使用冒号将二者拼接
{Client ID}:{Client Secret}
然后 Base64 后放入 Authorization 请求头中
Base64
Authorization
client_secret_post 和 client_secret_basic 是 RFC 6749, 2.3.1. Client Password 描述的两种客户端验证方案
client_secret_post
client_secret_basic
在请求 token 的时候, 对数据使用 Secret 来生成签名 RFC 7515 (JSON Web Signature) 生成 JWT (RFC 7519) 传给授权服务器
JWT payload 格式定义在 RFC 7523, 2.2. Using JWTs for Client Authentication
这个 JWT 称为客户端断言 (OAuth In Action 也翻译为断言, 姑且称之)
请求 Token 时, 客户端断言 置于 client_assertion 请求参数上, client_assertion_type 是固定值: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion
client_assertion_type
urn:ietf:params:oauth:client-assertion-type:jwt-bearer
既然上面是用对称加密, 那么就一定会出现不对称加密 (公钥分享使用诸如 jwks 或 jwks_uri client metadata)
jwks
jwks_uri
全文摘抄 https://darutk.medium.com/oauth-2-0-client-authentication-4b5f929305d4
client_secret_post
(OIDC Core, 9. Client Authentication)
传统的方式中, 授权服务器提前给与客户端一对
ID
和Secrect
然后再发送 POST 请求 token 的时候附加这对信息
client_secret_basic
(OIDC Core, 9. Client Authentication)
在获取 token 请求中包含
ID
和Secret
使用 Basic Authentication (RFC 7617)首先使用冒号将二者拼接
然后
Base64
后放入Authorization
请求头中client_secret_jwt
(OIDC Core, 9. Client Authentication)
在请求 token 的时候, 对数据使用
Secret
来生成签名 RFC 7515 (JSON Web Signature) 生成 JWT (RFC 7519) 传给授权服务器JWT payload 格式定义在 RFC 7523, 2.2. Using JWTs for Client Authentication
这个 JWT 称为客户端断言 (OAuth In Action 也翻译为断言, 姑且称之)
请求 Token 时, 客户端断言 置于
client_assertion
请求参数上,client_assertion_type
是固定值:urn:ietf:params:oauth:client-assertion-type:jwt-bearer
private_key_jwt
(OIDC Core, 9. Client Authentication)
既然上面是用对称加密, 那么就一定会出现不对称加密 (公钥分享使用诸如
jwks
或jwks_uri
client metadata)