Details
-
Type:
New Feature
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.7.12
-
Component/s: None
-
Labels:None
-
Rank:0|s0000w:
-
Sprint:v1712.1
-
i2b2 Feature/s:Login Authentication
Description
JCIFS is in maintenance mode and does not support NTML2/3. Action items:
1) Create new security authentication called SecurityAuthenticationNTLM2
2) Propose using SMBj which support 2 and partial 3
Proposed code for new security authentication:
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
import com.hierynomus.smbj.session.Session;
public class SecurityAuthenticationNTLM2 implements SecurityAuthentication {
@Override
public boolean validateUser(String username, String password,
Hashtable params) throws Exception {
SMBClient client = new SMBClient();
try (
Connection connection = client.connect((String) params.get("domain_controller"))) {
AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), (String) params.get("domain"));
Session session = connection.authenticate(ac);
session.getConnection();
session.close();
return true;
} catch(Exception se ) {
// NETWORK PROBLEMS?
throw new Exception (se.getMessage());
}
1) Create new security authentication called SecurityAuthenticationNTLM2
2) Propose using SMBj which support 2 and partial 3
Proposed code for new security authentication:
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
import com.hierynomus.smbj.session.Session;
public class SecurityAuthenticationNTLM2 implements SecurityAuthentication {
@Override
public boolean validateUser(String username, String password,
Hashtable params) throws Exception {
SMBClient client = new SMBClient();
try (
Connection connection = client.connect((String) params.get("domain_controller"))) {
AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), (String) params.get("domain"));
Session session = connection.authenticate(ac);
session.getConnection();
session.close();
return true;
} catch(Exception se ) {
// NETWORK PROBLEMS?
throw new Exception (se.getMessage());
}