Секрет создан в. Net с использованием кода ниже
var key = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(key);
var base64Secret = TextEncodings.Base64Url.Encode(key)
Audience newAudience = new Audience { ClientId = clientId, Base64Secret = base64Secret, Name = name };
Токен создается в. Net с использованием кода ниже
string symmetricKeyAsBase64 = audience.Base64Secret;
var keyByteArray = TextEncodings.Base64Url.Decode(symmetricKeyAsBase64);
var signingKey = new HmacSigningCredentials(keyByteArray);
var issued = data.Properties.IssuedUtc;
var expires = data.Properties.ExpiresUtc;
var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey);
Приведенный выше код успешно создал токен, который необходимо декодировать в python:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1bmlxdWVfbmFtZSI6ImRldnVzZXIiLCJzdWIiOiJkZXZ1c2VyIiwicm9sZSI6WyJNYW5hZ2VyIiwiU3VwZXJ2aXNvciJdLCJpc3MiOiJodHRwczovL2ppbmFsYXV0aGFwaWRldi5henVyZXdlYnNpdGVzLm5ldCIsImF1ZCI6IjZBMDA1NzRBRTU1MTRDMUM5MEQyRDUzMzJGRUY3OEY5IiwiZXhwIjoxNTk2NzA4NTU1LCJuYmYiOjE1OTY3MDY3NTV9.fAbd_fz8y2EKPbYk7N42_kPXqGGOdVGSDYtJhSOz1DA
Секрет - это IxrAjDoa2FqElO7IhrSrUJELhUckePEPVpaePlS_Xaw
, который создается и сохраняется в базе данных. Секрет кодируется с использованием TextEncodings.Base64Url.Encode
перед сохранением в базе данных. Я попытался расшифровать секретный ключ в python, добавив «=»
base64.urlsafe_b64decode("IxrAjDoa2FqElO7IhrSrUJELhUckePEPVpaePlS_Xaw=")
. Я также попытался, добавив двойное равное «==», используя метод ниже
base64.b64decode("IxrAjDoa2FqElO7IhrSrUJELhUckePEPVpaePlS_Xaw==")
Fianlly Я пробовал два вышеупомянутых метода для декодирования секрета и использования его в jwt.decode()
jwt.decode(token, secret, algorithms=['HS256'])
Ничего не сработало.
Токен выглядит как
HEADER:ALGORITHM & TOKEN TYPE
{
"typ": "JWT",
"alg": "HS256"
}
PAYLOAD:DATA
{
"unique_name": "devuser",
"sub": "devuser",
"role": [
"Manager",
"Supervisor"
],
"iss": "https://xxxxxxx.azurewebsites.net",
"aud": "6A00574AE5514C1C90D2D5332FEF78F9",
"exp": 1596636265,
"nbf": 1596634465
}
**VERIFY SIGNATURE**
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
)