如何在 Auth0 Python 网络应用程序中获取 JWT?
How to get JWT in Auth0 Python web app?
我以这个项目为起点:https://github.com/auth0-samples/auth0-python-web-app
根据 https://auth0.com/docs/tokens/access-token,如果我将 audience 设置为 URL 指向自定义 API.
这正是我所做的,但我仍然只得到一个不透明的访问令牌,好像观众仍然会指向 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"))
此调用中的 response
是一个字典,其中包含 access_token
以及 id_token
即 JWT
如果您打算从此 JWT 中获取信息,您需要使用适当的第 3 方库对其进行解析。有几个可用...您也可以通过此网站验证令牌(例如查看内容):
https://jwt.io/ (将上面 "print" 命令的输出粘贴到调试器中)
此站点上的 JWT 调试器下方还有一个 python 库及其功能列表。
它大致包含与您交换 access_token
与 /userinfo/
端点以获取用户配置文件时获得的相同信息。
还有...
我发现,当我从使用 Lock 库切换到 Flask-OAuthlib
库时,我需要将 "email" 添加到范围参数中。这取决于您允许的连接类型,但我的范围现在看起来像:"openid profile email"
我以这个项目为起点:https://github.com/auth0-samples/auth0-python-web-app
根据 https://auth0.com/docs/tokens/access-token,如果我将 audience 设置为 URL 指向自定义 API. 这正是我所做的,但我仍然只得到一个不透明的访问令牌,好像观众仍然会指向 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"))
此调用中的 response
是一个字典,其中包含 access_token
以及 id_token
即 JWT
如果您打算从此 JWT 中获取信息,您需要使用适当的第 3 方库对其进行解析。有几个可用...您也可以通过此网站验证令牌(例如查看内容):
https://jwt.io/ (将上面 "print" 命令的输出粘贴到调试器中)
此站点上的 JWT 调试器下方还有一个 python 库及其功能列表。
它大致包含与您交换 access_token
与 /userinfo/
端点以获取用户配置文件时获得的相同信息。
还有...
我发现,当我从使用 Lock 库切换到 Flask-OAuthlib
库时,我需要将 "email" 添加到范围参数中。这取决于您允许的连接类型,但我的范围现在看起来像:"openid profile email"