1

Ich arbeite an meiner Webanwendung, die die oAuth2-Authentifizierung mit Third-Party-Diensten unterstützt. So habe ich meine clientId und clientSecret Schlüssel, die ich verwende, um meine Anwendung zu autorisieren.Der richtige Platz für oAuth2 clientId & clientSecret

Ich benutze Spring Sicherheit oAuth Abhängigkeit und konfigurieren alles in Requisiten. Und so ist hier das Problem: wie ich verstehe, halten diese Informationen in Klassenpfad Requisiten in unsicheren. Auf der anderen Seite suche ich nach einer Lösung, die es mir ermöglicht, meine Anwendung ohne irgendwelche Drittanbieter-Props/Konfigurationen aus der Box zu starten (also mag ich die Idee nicht, diese Requisiten auf die Umgebungsseite zu setzen)

Ich frage mich, ob es Best Practices gibt, clientId und clientSecret Schlüssel zu halten?

+0

Verwendung application.properties Datei, es ist der beste Ort, –

+0

IMHO denke ich, wenn Sie ein Java-basierten config wird es besser sein, dass mit Eigenschaften config-Datei gehen, Werfen Sie einen Blick hier [oauth2 Beispiel - java config] (https://github.com/spring-projects/spring-security-javaconfig/blob/master/samples/oauth2-sparklr/src/main/java/org/springframework/security/oauth/examples/ sparklr/config/OAuth2ServerConfig.java) –

+0

mein Anliegen hier ist über Sicherheit. Speichern diese nur in Java-Konfiguration oder application.properties führt zu dem Fall, wenn diese Schlüssel gestohlen werden können (wie sie nicht gesichert sind) und von einer anderen Anwendung wiederverwendet werden, die vorgibt, dass es mir gehört. Deshalb suche ich hier nach Best Practices. – ikryvorotenko

Antwort

0

Bei Salesforce haben wir vertrauliche Informationen in Eigenschaften verschlüsselt gespeichert. Beispiel:

sensitive.property=ENC(2sfs25D!==) 

Wenn eine App gestartet wird, liest sie diese Eigenschaften, identifiziert, welche verschlüsselt sind und entschlüsselt sie. Es ist möglich, zum Beispiel den Standardwerten für den Federwert @ eine benutzerdefinierte Logik hinzuzufügen.

Je nach Sicherheitsrichtlinien Ihres Unternehmens verwenden Sie einen geeigneten Verschlüsselungsalgorithmus. Zum Beispiel Scrypt: https://mvnrepository.com/artifact/com.lambdaworks/scrypt

int SCRYPT_N_PARAM = 65536; 
int SCRYPT_R_PARAM = 8; 
SCryptUtil.scrypt(str, SCRYPT_N_PARAM, SCRYPT_R_PARAM, 1); 
Verwandte Themen