Skip to content

Commit b4cb169

Browse files
fix: custom token generator ( #1 )
1️⃣ updates package dependencies 2️⃣ test cases updated
1 parent cf8774a commit b4cb169

File tree

4 files changed

+5
-13
lines changed

4 files changed

+5
-13
lines changed

firebase/auth/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import json
1616
import datetime
1717
import python_jwt as jwt
18-
from Crypto.PublicKey import RSA
18+
import jwcrypto.jwk as jwk
1919

2020
from firebase._exception import raise_detailed_error
2121

@@ -121,7 +121,7 @@ def create_custom_token(self, uid, additional_claims=None, expiry_minutes=60):
121121
"""
122122

123123
service_account_email = self.credentials.service_account_email
124-
private_key = RSA.importKey(self.credentials._private_key_pkcs8_pem)
124+
private_key = jwk.JWK.from_pem(self.credentials._private_key_pkcs8_pem.encode('utf-8'))
125125

126126
payload = {
127127
"iss": service_account_email,
@@ -135,7 +135,7 @@ def create_custom_token(self, uid, additional_claims=None, expiry_minutes=60):
135135

136136
exp = datetime.timedelta(minutes=expiry_minutes)
137137

138-
return jwt.generate_jwt(payload, private_key, "RS256", exp)
138+
return jwt.generate_jwt(payload, private_key, "RS256", exp, other_headers={'kid': self.credentials._private_key_id})
139139

140140
def sign_in_with_custom_token(self, token):
141141
""" Exchange custom token for an ID and refresh token.

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ classifiers = [
7979
dependencies = [
8080
'gcloud>=0.18.3',
8181
'oauth2client>=4.1.3',
82-
'pycryptodome>=3.14.1',
8382
'python_jwt>=3.3.2',
8483
'requests>=2.27.1',
8584
'six>=1.16.0',

requirements.txt

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
gcloud>=0.18.3
22
oauth2client>=4.1.3
3-
pycryptodome>=3.15.0
43
python_jwt>=3.3.2
54
requests>=2.27.1
65
six>=1.16.0

tests/test_auth.py

+2-8
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,16 @@ def test_sign_in_anonymous(self, auth):
4242
self.__class__.anonymous_user = user
4343
assert user
4444

45-
@pytest.mark.xfail
4645
def test_create_custom_token(self, auth):
47-
token = auth.create_custom_token('CreateCustomToken')
46+
token = auth.create_custom_token('CreateCustomToken1')
4847
self.__class__.custom_token = token
4948
assert token
5049

51-
@pytest.mark.xfail
5250
def test_create_custom_token_with_claims(self, auth):
53-
token = auth.create_custom_token('CreateCustomToken', {'premium': True})
51+
token = auth.create_custom_token('CreateCustomToken2', {'premium': True})
5452
self.__class__.custom_token_with_claims = token
5553
assert token
5654

57-
@pytest.mark.xfail
5855
def test_sign_in_with_custom_token(self, auth):
5956
user1 = auth.sign_in_with_custom_token(self.__class__.custom_token)
6057
user2 = auth.sign_in_with_custom_token(self.__class__.custom_token_with_claims)
@@ -87,8 +84,5 @@ def test_update_profile_display_name(self, auth):
8784
def test_delete_user_account(self, auth):
8885
assert auth.delete_user_account(self.__class__.user.get('idToken'))
8986
assert auth.delete_user_account(self.__class__.anonymous_user.get('idToken'))
90-
91-
@pytest.mark.xfail
92-
def test_delete_custom_user_account(self, auth):
9387
assert auth.delete_user_account(self.__class__.custom_user.get('idToken'))
9488
assert auth.delete_user_account(self.__class__.custom_user_with_claims.get('idToken'))

0 commit comments

Comments
 (0)