我以这个项目为起点:https://github.com/auth0-samples/auth0-python-web-app
根据https://auth0.com/docs/tokens/access-token ,如果我将受众设置为指向自定义 API 的 URL,我应该会获得 JWT。 这正是我所做的,但我仍然只得到一个不透明的访问 token ,就好像观众仍然会指向 abc.eu.auth0.com/userinfo
我想知道我是否需要做其他事情来获取 JWT?
我已经尝试添加“access_token_params”:
auth0 = oauth.remote_app(
'auth0',
consumer_key=AUTH0_CLIENT_ID,
consumer_secret=AUTH0_CLIENT_SECRET,
access_token_params={
'scope': 'openid profile',
'audience': AUTH0_AUDIENCE
},
request_token_params={
'scope': 'openid profile',
'audience': AUTH0_AUDIENCE
},
base_url='https://%s' % AUTH0_DOMAIN,
access_token_method='POST',
access_token_url='/oauth/token',
authorize_url='/authorize',
)
遗憾的是,没有成功。如果您能给我一些我可能错过的提示,我会很高兴。
最佳答案
您不需要在remote_app 定义中需要access_token_parameters
参数。
在回调路由中,代码应如下所示:
@app.route('/auth/callback/')
def auth_callback():
response = auth0.authorized_response()
print(response.get("id_token"))
此调用的响应
是一个字典,其中包含access_token
以及id_token
,即JWT
如果您打算从此 JWT 获取信息,您需要使用适当的第三方库来解析它。有几种可用...您还可以通过此网站验证 token (例如查看内容):
https://jwt.io/ (将上面“print”命令的输出粘贴到调试器中)
此站点上的 JWT 调试器下方还有一个 Python 库及其功能的列表。
它大致包含与您与 /userinfo/
端点交换 access_token
以获取用户个人资料时获得的相同信息。
还有...
我发现,当我从使用 Lock 库切换到 Flask-OAuthlib
库时,我需要将“电子邮件”添加到范围参数中。这取决于您允许的连接类型,但我的范围现在如下所示:“openid profile email”
关于python - 如何在 Auth0 Python Web 应用程序中获取 JWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48956909/