[英]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.