diff options
author | Simon Rettberg | 2015-09-10 12:06:04 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-10 12:06:04 +0200 |
commit | a4a47f3a636df76885275136f6c0757207c72763 (patch) | |
tree | 75930c80306e48acea8e1978b4eae20daff417a8 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java | |
parent | [*] Improve SSL handling (diff) | |
download | tutor-module-a4a47f3a636df76885275136f6c0757207c72763.tar.gz tutor-module-a4a47f3a636df76885275136f6c0757207c72763.tar.xz tutor-module-a4a47f3a636df76885275136f6c0757207c72763.zip |
[client] Remember finger prints supplied by master server
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java index c16c4f0a..47fc0178 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java @@ -17,14 +17,17 @@ import javax.swing.DefaultComboBoxModel; import javax.swing.JFrame; import org.apache.log4j.Logger; +import org.apache.thrift.TBaseHelper; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.Organization; +import org.openslx.bwlp.thrift.iface.Satellite; import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.authentication.Authenticator; import org.openslx.dozmod.authentication.Authenticator.AuthenticationData; import org.openslx.dozmod.authentication.Authenticator.AuthenticatorCallback; import org.openslx.dozmod.authentication.EcpAuthenticator; +import org.openslx.dozmod.authentication.FingerprintManager; import org.openslx.dozmod.authentication.ShibbolethEcp; import org.openslx.dozmod.authentication.ShibbolethEcp.ReturnCode; import org.openslx.dozmod.authentication.TestAccountAuthenticator; @@ -330,6 +333,8 @@ public class LoginWindow extends LoginWindowLayout { */ private void postSuccessfulLogin(AuthenticationData data) { LOGGER.info(loginType.toString() + " succeeded, token " + data.satelliteToken); + // Update known suggested fingerprints + importFingerprints(data.satellites); // now try to init the session with the data received if (ThriftActions.initSession(data)) { if (saveUsernameCheck.isSelected()) { @@ -341,6 +346,25 @@ public class LoginWindow extends LoginWindowLayout { } } + /** + * If master server supplies certificate finger prints for a satellite, + * store them so we can verify later. + * + * @param satellites + */ + private void importFingerprints(List<Satellite> satellites) { + if (satellites == null || satellites.isEmpty()) + return; + for (Satellite sat : satellites) { + if (sat.addressList == null || sat.certSha256 == null || sat.addressList.isEmpty()) + continue; + byte[] fingerprint = TBaseHelper.byteBufferToByteArray(sat.certSha256); + for (String address : sat.addressList) { + FingerprintManager.saveSuggestedFingerprint(address, fingerprint); + } + } + } + @SuppressWarnings("deprecation") @Override public void show() { |