gpt4 book ai didi

python - Auth0 PKCE Grant 无法验证代码验证器

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:03 26 4
gpt4 key购买 nike

我有一个客户端应用程序,我想使用 Auth0 进行授权,我正在使用此处描述的工作流程:

https://auth0.com/docs/api-auth/tutorials/authorization-code-grant-pkce

唯一的问题是我使用的是 python,所以我编写了自己的质询/验证器对。

def base64URLEncode(random_bytes):
return urlsafe_b64encode(random_bytes)


def sha256(buffer):
m = hashlib.sha256()
m.update(buffer)
return m.digest()

verifier = base64URLEncode(secrets.token_bytes(32))
challenge = base64URLEncode(sha256(verifier))

该应用是一个 Flask 命令行应用,它打开一个页面供用户在其网络浏览器中使用 google 登录,然后监听重定向 URI 以获取响应代码。

我构建 URL 以启动授权,如下所示:

url = DOMAIN + urllib.parse.urlencode(params)
webbrowser.open(url)

我从谷歌登录取回代码,但是当我尝试用代码交换访问 token 时:

payload = {
'grant_type': 'authorization_code',
'client_id': CLIENT_ID,
'code_verifier': verifier,
'code': code,
'redirect_uri': 'http://localhost:5001/get_code'
}
res = requests.post("https://cidc-test.auth0.com/oauth/token", json=payload)

我收到以下类型的错误:

{'error': 'invalid_grant', 'error_description': 'Failed to verify code verifier'}

我不确定为什么验证器不好,因为在本地检查它,验证器会消化与挑战相同的值。

最佳答案

好吧,事实证明这是 Auth0 的一个特定问题,Auth0 不希望 base64 编码字符串末尾的填充字符。一旦添加,我的代码就可以工作。

关于python - Auth0 PKCE Grant 无法验证代码验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49435929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com