Oauth2隐式流程(https://tools.ietf.org/html/draft-ietf-oauth-security-topics-10),应使用PKCE的授权代码代替。为什么后者更安全?它在这种客户端中如何工作?
答案 0 :(得分:0)
阅读RFC7636后,很清楚,公开客户从现在开始如何使用授权码:
+-------------------+
| Authz Server |
+--------+ | +---------------+ |
| |--(A)- Authorization Request ---->| | |
| | + t(code_verifier), t_m | | Authorization | |
| | | | Endpoint | |
| |<-(B)---- Authorization Code -----| | |
| | | +---------------+ |
| Client | | |
| | | +---------------+ |
| |--(C)-- Access Token Request ---->| | |
| | + code_verifier | | Token | |
| | | | Endpoint | |
| |<-(D)------ Access Token ---------| | |
+--------+ | +---------------+ |
+-------------------+
总结:通过使用PKCE,授权服务器现在可以验证请求授权码的客户端和想要为访问令牌交换授权码的客户端是否相同。
(A)客户端生成代码验证字符串(code_verifier
)对其应用转换(t_m
),并发送转换(t(code_verifier)
))和转换的结果功能(t_m
)到身份验证服务器。
(B)身份验证服务器记录t(code_verifier)
和t_m
并回答授权码。
(C)当C请求访问令牌时,它同时发送授权码和code_verifier
。 Auth服务器将t_m
应用于此code_verifier
,并将其结果与存储的t(code_verifier)
进行比较,以验证通信的完整性。