簡體   English   中英

驗證並解析 python 中的 Auth0 JWT 令牌

[英]Validate and parse Auth0 JWT token in python

當有人通過 Auth0 登錄我的網站時,我從 Auth0 獲得一個 JWT 令牌。 這個令牌告訴我這個人的 UID,並允許我從前端到后端進行 API 調用,我可以在后端驗證 JWT 令牌以確保請求來自登錄用戶。

https://jwt.io 上,您可以粘貼任何 JWT 令牌,它會解析它並驗證簽名。

有誰知道我如何在 python 中做到這一點?

Auth0 沒有給我 JWT 令牌的私鑰,所以我不能使用jwt.decode()

相反,我需要以某種方式使用其公鑰解析 JWT 令牌,但我不確定如何在 python 中檢索它。

這是 JWT 令牌:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImZneF9xWEJVNWt0ZzZXSlNLdTJIdiJ9.eyJuaWNrbmFtZSI6ImpvaG5fbWFyayIsIm5hbWUiOiJqb2huX21hcmtAb3V0bG9vay5jb20iLCJwaWN0dXJlIjoiaHR0cHM6Ly9zLmdyYXZhdGFyLmNvbS9hdmF0YXIvNTMxZmJlZjcxN2I1NzVmYjU3MGJlYzcxNTBlOWQ4MTA_cz00ODAmcj1wZyZkPWh0dHBzJTNBJTJGJTJGY2RuLmF1dGgwLmNvbSUyRmF2YXRhcnMlMkZqby5wbmciLCJ1cGRhdGVkX2F0IjoiMjAyMi0wNC0wNVQxNDoyMzozNy42NTFaIiwiZW1haWwiOiJqb2huX21hcmtAb3V0bG9vay5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImlzcyI6Imh0dHBzOi8vZGV2LW44Z2h5a3lvLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw2MTdiZTllMzJhMmYyNjAwNmEzZDlhM2EiLCJhdWQiOiIwUGwwR1F5cFhjNkZEakxhb0JuSjhzOEtNZjVKZ3J4bSIsImlhdCI6MTY0OTE2ODYyMiwiZXhwIjoxNjQ5MjA0NjIyLCJub25jZSI6IlJuTjBmbFoyU0Vkck4wSkhRV1EyY21FMk1rNUpXVlUzTW1jM2RtaHlXVkJWYm5oalowMUNUR1paU3c9PSJ9.NQBQPoEj6wzYzclrQzXAWh124gyg_Nf1UYZR4lAuqHZ-fdFycrBMA0Y0dBSvQ-WI7YZOMAPjCRK0nuxKzj9kMQ0c-3finCgsl411tX5tvaX_Khe116le_eyBV28aQQLjqT0zvLaSgIYaJqcgshQ1bYvJp8UXPf8GkMWCD89pnqYPwexx9nsWjrnikInLY9oSbWYN1zA7DxwhygI_JeQc6Cvu6pl1xq8m_WZaCMSOJS2umyl_7vfA84cDX1Zz8aVWEOMinnbmR48sY79cEiIMplcYJA3QH4yFEawSWbzWnVUcv9VCgCJ7fCbqikF86fz2TrWYrI6eATJoVHOXDNDKwA

當然你不會得到私鑰。 但私鑰僅用於簽署令牌。 您只需要公鑰來驗證令牌。 jwt.decode() function 調用decode,還要驗證token,所以需要key。

文檔告訴您在哪里可以找到帶有公鑰的 JWKS(JSON Web 密鑰集)。

Auth0 為每個租戶公開一個 JWKS 端點,位於 https://YOUR_DOMAIN/.well-known/jwks.json。 此端點將包含用於驗證此租戶的所有 Auth0 頒發的 JWT 的 JWK。

發行人 URL 也被編碼在iss聲明中的令牌中(您可以在https://jwt.io檢查您的令牌時看到它):

在你的情況下: https://dev-n8ghykyo.us.auth0.com/.well-known/jwks.json

然后,您可以使用此答案中顯示的代碼從該端點檢索密鑰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM