Ich versuche, den Anmeldefluss auf diesem Python-Repo zu replizieren, aber in Swift. Es gibt 4 Schritte, wie in der Anmeldefunktion angezeigt, und ich habe Probleme mit dem zweiten Schritt. Ich habe den ersten Schritt korrekt bestanden und alle erforderlichen Informationen aus „ChallengeParameters“ extrahiert. Wenn ich jedoch den zweiten Schritt versuche, erhalte ich die folgende http-Antwort. Ich bin zu 100 Prozent sicher, dass das von mir eingegebene Passwort korrekt ist und alle Werte von „ChallengeParameters“ richtig erscheinen. Ich habe das Gefühl, dass das Problem darin besteht, wie die Signatur berechnet wird, da die Berechnung ziemlich aufwändig ist und ich das Gefühl habe, dass ich sie nicht korrekt aus Python konvertiere.
Der relevante Code im obigen Link befindet sich in den Dateien cognito/srp.py und cognito/auth.py. Ich empfehle nicht, zu versuchen, dies zu reproduzieren. Ich denke, mein Problem liegt darin, dass ich CryptoKit nicht verstehe und den Python-Code konvertiere. Wenn Sie versuchen möchten, dies zu reproduzieren, müssen Sie ein Extend VCC-Konto erstellen. Außerdem müssen Sie die 3 Variablen extrahieren, wie in der Readme-Datei im Link gezeigt.
Um den Code aufzurufen, können Sie einfach Folgendes tun:
Ich versuche, den Anmeldefluss auf diesem Python-Repo zu replizieren, aber in Swift. Es gibt 4 Schritte, wie in der Anmeldefunktion angezeigt, und ich habe Probleme mit dem zweiten Schritt. Ich habe den ersten Schritt korrekt bestanden und alle erforderlichen Informationen aus „ChallengeParameters“ extrahiert. Wenn ich jedoch den zweiten Schritt versuche, erhalte ich die folgende http-Antwort. Ich bin zu 100 Prozent sicher, dass das von mir eingegebene Passwort korrekt ist und alle Werte von „ChallengeParameters“ richtig erscheinen. Ich habe das Gefühl, dass das Problem darin besteht, wie die Signatur berechnet wird, da die Berechnung ziemlich aufwändig ist und ich das Gefühl habe, dass ich sie nicht korrekt aus Python konvertiere. [code]{"__type":"NotAuthorizedException","message":"Incorrect username or password."}[/code] Wenn ich das Web-JS durchsuche, erhalte ich Folgendes: (und was ich an Auth übergebe) [code]deviceKey = "-d4yTUB0o" devicePassword = "us-east-1_c75a763a-304d-46f4-8b56-b72cb0101dac" randomPasswordKey = "Nk/v/8FbJPo16AxlzUN3BFVw4NoMIRkslKpcQQUsh76eWezJwUE55g==" [/code] Der relevante Code im obigen Link befindet sich in den Dateien cognito/srp.py und cognito/auth.py. Ich empfehle nicht, zu versuchen, dies zu reproduzieren. Ich denke, mein Problem liegt darin, dass ich CryptoKit nicht verstehe und den Python-Code konvertiere. Wenn Sie versuchen möchten, dies zu reproduzieren, müssen Sie ein Extend VCC-Konto erstellen. Außerdem müssen Sie die 3 Variablen extrahieren, wie in der Readme-Datei im Link gezeigt. Um den Code aufzurufen, können Sie einfach Folgendes tun: [code]let authParams = AuthParams(username: email, password: password, deviceKey: deviceKey, devicePassword: randomPasswordKey, deviceGroupKey: deviceGroupKey) let cognito = Cognito(auth: authParams)
Task { do { let accessToken = try await cognito.authenticate() } catch { print("Err") } } [/code] [b]srp-Datei[/b] [code]import Foundation import CryptoKit import BigInt
class SRPAuthentication { private let auth: AuthParams private let N_HEX = """ FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF """ private let G_HEX = "2" private let INFO_BITS = "Caldera Derived Key" private let N: BigInt private let g: BigInt private let a: BigInt private let A: BigInt
private func getPasswordAuthenticationKey( poolName: String, userId: String, password: String, bigB: BigInt, salt: BigInt ) -> Data { // Calculate U value let u = calculateU(A: self.A, B: bigB)
// Calculate X value let userPass = "\(poolName)\(userId):\(password)" let userPassHash = SHA256.hash(data: userPass.data(using: .utf8)!).hexEncodedString() let xHex = padHex(longToHex(salt)) + userPassHash let x = hexToLong(xHex)
// Calculate S value let gPowXN = g.power(x, modulus: N) let intVal1 = (bigB - (self.k() * gPowXN)) % N let intVal2 = (self.a + (u * x)) % (N - 1) let s = intVal1.power(intVal2, modulus: N)
class Cognito { private let srp: SRPAuthentication private var accessToken: String = "" private var refreshToken: String = "" private var expiry: Date = Date() private let session: URLSession private let lock = NSLock()
let (data, response) = try await URLSession.shared.data(for: request)
if let dataString = String(data: data, encoding: .utf8) { print("Response Data as String: \(dataString)") //Incorrect username or password } else { print("Unable to convert data to string.") }
Ich lerne gerade Python und arbeite mit Listen. Ich bin auf zwei Methoden gestoßen - append () und extend () - und ich bin ein bisschen verwirrt darüber, wie sie anders sind.
Zum Beispiel:
a =
b =...
Alle verschleierten Teile sind in angegeben.
Ich habe MySQL auf Rocky Linux v9.5 mit MySQL Enterprise v9.1.0-1.1el9 eingerichtet.Mit einer Testversion von MySQL Enterprise Edition versuche ich, das...
Mein Ubuntu 10.04 wurde mit Python 2.6 geliefert. Jetzt habe ich auch Python 2.7 installiert, was jetzt der Systemstandard ist, denn wenn ich Python vom Terminal aus starte, startet es Python 2.7....