Я пытаюсь реализовать привязку аккаунта в Действиях в Google (используя this )
Я застрял на Обработка автоматического связывания .Я получаю assertion
из запроса, когда пытаюсь декодировать его, используя python-jose библиотеку, указанную здесь !
from jose import jwt
key = "728f4016652079b9ed99861bb09bafc5a45baa86" # PUBLIC KEY OF GOOGLE from https://www.googleapis.com/oauth2/v3/certs
encoded = "ENCODED_ASSERTION"
decoded = jwt.decode(encoded, key, algorithms='RS256')
print (decoded)
при запуске этогокод, который он показывает
Traceback (most recent call last):
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/backends/pycrypto_backend.py", line 72, in __init__
self.prepared_key = RSA.importKey(key)
File "/Users/jay.patel/env372/lib/python3.7/site-packages/Crypto/PublicKey/RSA.py", line 757, in import_key
raise ValueError("RSA key format is not supported")
ValueError: RSA key format is not supported
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/jay.patel/PycharmProjects/Prac/jwt.py", line 19, in <module>
decoded = jwt.decode(encoded, key, algorithms='RS256')
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/jwt.py", line 135, in decode
payload = jws.verify(token, key, algorithms, verify=verify_signature)
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/jws.py", line 77, in verify
_verify_signature(signing_input, header, signature, key, algorithms)
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/jws.py", line 264, in _verify_signature
if not _sig_matches_keys(keys, signing_input, signature, alg):
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/jws.py", line 212, in _sig_matches_keys
key = jwk.construct(key, alg)
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/jwk.py", line 61, in construct
return key_class(key_data, algorithm)
File "/Users/jay.patel/env372/lib/python3.7/site-packages/jose/backends/pycrypto_backend.py", line 74, in __init__
raise JWKError(e)
jose.exceptions.JWKError: RSA key format is not supported
Что я делаю не так ??Я только что использовал RS256, потому что он указан в открытых ключах Google (доступно в формате JWK или PEM )
PS Когда я пытаюсьдля декодирования утверждения здесь с алгоритмом RS256
он показывает ошибку недопустимой подписи, как показано на рисунке ниже.
![enter image description here](https://i.stack.imgur.com/IgYP5.png)
Edit Я узнал, что передаю неправильный ключ, поэтому теперь я использую этот код для генерации открытых ключей из сертификата, но он выдаёт мне эту ошибку.
initializer for ctype 'char' must be a bytes of length 1, not int
этомой код
from cryptography.x509 import load_pem_x509_certificate
from cryptography.hazmat.backends import default_backend
certificate_text = open('certificate.txt', 'r').read()
certBytes = list(certificate_text.encode())
certificate = load_pem_x509_certificate(certBytes, default_backend())
publicKey = certificate.public_key()
и вот так выглядит мой сертификат.txt:
-----BEGIN CERTIFICATE-----
MIIDJjCCAg6gAwIBAgIIHiSmgNCe4EIwDQYJKoZIhvcNAQEFBQAwNjE0MDIGA1UE
AxMrZmVkZXJhdGVkLXNpZ25vbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTAe
Fw0xODEwMjQxNDQ5MTFaFw0xODExMTAwMzA0MTFaMDYxNDAyBgNVBAMTK2ZlZGVy
YXRlZC1zaWdub24uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCPeue6aABtdQzCrAvfWU1Vi69YZuuJPu7L
sKBN6rB80t/pD1MxCUOJ2sUVIuBJ7YGJ+MSzBLoHiqmxcyWsyhKjMjBse5KShBl1
jabm8URlGTIcHiYApm7NSLlcfktWWVu/ZMGnoqyMlZJJbkGfJ6f2kh5qYd04Ohf8
8R0GGaqScNRFG66rcFvchWe50Y/wkJsdNnzplLZpLaGlgrd4Dx2+nXnkrWMowAb1
Yfz2OGR4VHrs6r2YP7IZkNo0I3yc5lHkjLD5ZAmjn6KMQByQdefVJ1gaNCCb/Z+8
QGx/SAkSObHYOs15pxkvINQD90H0kjLlmt8VnQf2XQiRKCCBRJqRAgMBAAGjODA2
MAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsG
AQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQAXw0JJPtxs1hanLTxSFI21ib4BDUuI
+Aksnz1azijb6cKXVJAtDMQABpH2u6VTcnnGJ/nIQ4KeJHxMDL2w6wvViz9wwRH3
lru5D6Jks8IShBSeM80IOwrfxodEfju47B+G3Zxg/1qQ4QV0S3C+oMmcqQqHFK+l
Z6glTHJrNLjH+xtiwav6jIGUhDByHiRdEOp1hYBWt7tpbeLb4Mhxyk0schaf6o47
iF3bur6WaEPUI8rUBDv0rXKS3leN3AJmmEEnRZPCoBrNDg1Esxxy/VNLHhhKRHoc
+/K4sQuHeICO1a+yetfXIO6qa3rOOxEuL9ZpWvpSDqcRbYecDqa9CiZK
-----END CERTIFICATE-----
Что я делаю не так?(Я скопировал один из сертификатов из здесь и удалил \n
из него)