Go Auth0-验证代码验证程序错误失败
我正在编写一个脚本,它使用auth0通过远程API进行身份验证 遵循本教程: 我使用该函数生成代码质询,例如Go Auth0-验证代码验证程序错误失败,go,oauth-2.0,auth0,pkce,Go,Oauth 2.0,Auth0,Pkce,我正在编写一个脚本,它使用auth0通过远程API进行身份验证 遵循本教程: 我使用该函数生成代码质询,例如eQM2dqasJN3-gXcM0g1Se-CmAn8PyU7c5uHRKU7Exa0 我使用有效负载生成一个HTTP Post p := &payloadData{ GrantType: "authorization_code", ClientId: "...............................", (remov
eQM2dqasJN3-gXcM0g1Se-CmAn8PyU7c5uHRKU7Exa0
我使用有效负载生成一个HTTP Post
p := &payloadData{
GrantType: "authorization_code",
ClientId: "...............................", (removed)
CodeVerifier: codeChallenge,
Code: code, (example: AuL3ArApgQ4QDu_9)
RedirectUri: "http://127.0.0.1:16272/oauth/token",
}
...marshal json...
req, _ := http.NewRequest("POST", "https://my-app.eu.auth0.com/oauth/token", bytes.NewBuffer(payload))
我得到一个错误:
{403禁止403
{“error”:“invalid_grant”,“error_description”:“未能验证代码验证程序”}
其他对此的引用指出,在base64编码质询中,字符没有正确地进行url编码/替换
我已经尝试了以下两种编码/
code = strings.Replace(code, "+", "-", -1)
code = strings.Replace(code, "/", "_", -1)
code = strings.Replace(code, "=", "", -1)
及
但我总是得到:
{“error”:“invalid_grant”,“error_description”:“未能验证代码验证程序”}我在实现Auth0 PKCE时遇到了相同的错误:
{"error":"invalid_grant","error_description":"Failed to verify code verifier"}
在我的例子中,错误是由于在授权URL和令牌交换中意外发送了不同的验证器造成的。我对调用的授权URL和令牌交换请求正文进行了一些日志记录,以了解这一点,并建议您也这样做
我这里有一个正在运行的演示实现,您可以尝试。这是一个HTTP服务器,不是本机应用程序,但它成功地运行了PKCE流
+
和/
,因为Go支持使用base64.URLEncoding
而不是StdEncoding
,如下所示:
strings.Trim(base64.URLEncoding.EncodeToString(data), "=")
除Auth0文档外,IETF RFC-7636中还提供了有关OAuth 2.0 PKCE的更多信息:
{"error":"invalid_grant","error_description":"Failed to verify code verifier"}
strings.Trim(base64.URLEncoding.EncodeToString(data), "=")