AWS erhält den Benutzerpoolnamen für die Cognito-AuthentifizierungPython

Python-Programme
Guest
 AWS erhält den Benutzerpoolnamen für die Cognito-Authentifizierung

Post by Guest »

Ich verwende dieses Python-Paket, um programmgesteuert auf die Extend Virtual CC-API zuzugreifen. Es verwendet AWS Cognito Auth und ich habe Probleme mit Schritt 2 des Anmeldeablaufs, nämlich RespondToAuthChallenge. Ich übergebe die 5 Authentifizierungsvariablen unten korrekt, erhalte jedoch das Ergebnis „NotAuthorizedException..."Falscher Benutzername oder falsches Passwort, wenn ich den Code ausführe. Ich bin zu 100 Prozent sicher, dass die Authentifizierungsvariablen korrekt sind.Ich glaube, ich habe es auf pN4CuZHEc eingegrenzt, was den Namen des Benutzerpools darstellen soll (oder ich bin mir nicht sicher, ob die Verwendung des Werts pN4CuZHEc für meinen Freund funktioniert). Er erhält keine Authentifizierungsfehler, lebt aber in Chicago. Nach einem Blick auf die Cognito-Dokumente scheint es möglich zu sein, dass es für verschiedene Regionen unterschiedliche Poolnamen/IDs gibt Dann wäre es einfach, die Poolwerte aus dem Cognito-Dashboard abzurufen, aber da ich nicht:
Wie kann ich anstelle von pN4CuZHEc den richtigen Wert für mich erhalten?< /p>

Code: Select all

auth = Cognito(AuthParams(
username="@gmail.com",
password="",
device_group_key="-d4yTUD0o",                                # actual value
device_key="us-east-1_7353fa42-e44e-45e5-9103-c53bab043e2f", # actual value
device_password="X652caKCiboaq6...nxvvvsb8Ql+3uCr4LmwtQ==",
))

Code: Select all

def password_verifier_challenge(self, challenge_params: Dict[str, str]) -> Dict[str, str]:
username = challenge_params["USERNAME"]
user_id = challenge_params["USER_ID_FOR_SRP"]
salt_hex = challenge_params["SALT"]
srp_b_hex = challenge_params["SRP_B"]
secret_block_b64 = challenge_params["SECRET_BLOCK"]

hkdf = self._get_password_authentication_key(
"pN4CuZHEc",
user_id,
self.auth.password,
hex_to_long(srp_b_hex),
hex_to_long(salt_hex),
)

timestamp = datetime.now().strftime("%a %b %d %H:%M:%S UTC %Y")
secret_block = base64.b64decode(secret_block_b64)
msg = (
f"pN4CuZHEc{user_id}".encode("utf-8")
+ secret_block
+ timestamp.encode("utf-8")
)

hmac_obj = hmac.new(hkdf, msg, hashlib.sha256)
signature = base64.b64encode(hmac_obj.digest()).decode("utf-8")

return {
"TIMESTAMP": timestamp, "USERNAME": username, "PASSWORD_CLAIM_SECRET_BLOCK": secret_block_b64, "PASSWORD_CLAIM_SIGNATURE": signature, "DEVICE_KEY": self.auth.device_key,
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post