Wie entschlüsselt man ".signed", wenn der verschlüsselte Wert im HTTP-Header statt in einem Cookie gefunden wird?

9

Ich sende eine E-Mail-Adresse als signiertes Cookie:

%Vor%

Später sendet das Frontend es mir als HTTP-Header zurück:

%Vor%

Wie entschlüssle ich dann von der empfangenen Kopfzeile zur ursprünglichen E-Mail-Adresse? Ich habe versucht, die folgende Zeile, aber es erzeugt den Fehler:

  

NoMethodError-Ausnahme: undefinierte Methode "signiert" für #String: 0x00000008a57a78

%Vor%

Mit debugger erhalte ich einen Wert für request.headers["HTTP_USER_EMAIL"] von "Im9yZ29utcGxlLmNvbSI=--37ddc725d139f86095ae839012c31a14e" . Also ist der verschlüsselte Wert da.

Differenzwert in Cookie versus header: Wenn der verschlüsselte Wert in einem Cookie gefunden würde, könnten Sie ihn mit cookies.signed[:http_user_email] entschlüsseln. Meine Versuche von request.headers["HTTP_USER_EMAIL"].signed und request.headers.signed["HTTP_USER_EMAIL"] sind im Grunde die gleichen wie wenn Sie mit einem Cookie den verschlüsselten Wert des Cookies nehmen und am Ende .signed hinzufügen: "Im9yZ29utcGxlL".signed . Und das würde auch nicht funktionieren. Aber wie soll man es dann machen, wenn der verschlüsselte Wert in einer Zeichenkette gefunden wird?

Oder würden Sie argumentieren, dass Sie keine verschlüsselte Version der E-Mail-Adresse des Benutzers für die API-Authentifizierung verwenden müssen? Die Authentifizierung erfolgt auf Basis der Kombination der E-Mail-Adresse und eines Tokens (das Token muss) Match den Digest, der eine verschlüsselte Version des Tokens ist).

    
Nick 23.01.2016, 19:07
quelle

2 Antworten

1

Bei config/initializers/secret_token.rb sollten Sie das Passwort haben:

%Vor%

Zum Entschlüsseln:

%Vor%

In 4.0 basierend auf der Standardkonfiguration. Ab 4.1 könnte config / secrets.yml anstelle von secret_token.rb

verwendet werden     
jlvaquero 01.02.2016, 10:12
quelle
1

Setzen Sie den Wert als Cookie und greifen Sie mit signiertem

darauf zu

Also in deinem Fall

%Vor%     
lumos0815 31.01.2016 10:58
quelle