Je viens de configurer l'authentification dans Igniteb (un serveur spécifique, pas un localhost) https://APACHATEIGNITE.README.IO/docs/Advanced-Security
Cependant, j'ai rencontré un problème en essayant de se connecter. Où devrais-je fournir les informations d'identification? P>
TcpDiscoverySpi spi = new TcpDiscoverySpi(); TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); String ipList = appConfig.getIgniteIPAddressList(); List<String> addressList= Arrays.asList(ipList.split(";")); ipFinder.setAddresses(addressList); spi.setIpFinder(ipFinder); IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setIgniteInstanceName("IgnitePod"); cfg.setClientMode(true); cfg.setDiscoverySpi(spi); Ignite ignite = Ignition.start(cfg);
5 Réponses :
https://atachignite.readme.io/docs/advanced-security p>
explique comment configurer l'authentification via le nom d'utilisateur et le mot de passe pour les connexions minces uniquement (JDBC, ODBC). P>
Vous pouvez créer des utilisateurs à l'aide de commandes SQL comme le suivant: p>
https://apacheignite-sql.readme.io/docs/create-user p>
Vous pouvez fournir des informations d'identification à la chaîne de connexion client mince à l'aide de ses propriétés: P>
HTTPS: // Apacheignite-SQL .readme.io / Docs / Connection-String-String-and-DSN # Arguments prises en charge https: //apacheignite-sql.readme. IO / DOCS / JDBC-Driver # Section - String-String-String-Exemples P>
Veuillez également vérifier que vous avez enflammé la persistance configurée. P>
comme Notes Andrei , Ignite ne authentifie que des clients minces par défaut, et même alors que la persistance est activée. Si vous devez avoir des clients épais authentifier également, vous pouvez le faire à l'aide d'un plugin . Des solutions commerciales tierces et commerciales existent également. P>
La seule option pour les nœuds de serveur authentifiant peer-authentification disponibles dans Vanilla Apache Ignite est des certificats SSL +. P>
a été capable de résoudre mon propre problème en créant mon propre CustomTcPDiscoveryapi.
Tout d'abord, créez cette classe: puis, utilisez-le comme ci-dessous: P> SecurityCredentials cred = new SecurityCredentials();
cred.setLogin(appConfig.getIgniteUser());
cred.setPassword(appConfig.getIgnitePassword());
CustomTcpDiscoverySpi spi = new CustomTcpDiscoverySpi(cred);
//TcpDiscoverySpi spi = new TcpDiscoverySpi(); - > removed to use the CustomTCPDiscovery
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
String ipList = appConfig.getIgniteIPAddressList();
List<String> addressList= Arrays.asList(ipList.split(";"));
ipFinder.setAddresses(addressList);
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setIgniteInstanceName("IgnitePod");
cfg.setClientMode(true);
cfg.setAuthenticationEnabled(true);
// Ignite persistence configuration.
DataStorageConfiguration storageCfg = new DataStorageConfiguration();
// Enabling the persistence.
storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true);
// Applying settings.
// tests
cfg.setDataStorageConfiguration(storageCfg);
cfg.setDiscoverySpi(spi);
Ignite ignite = Ignition.start(cfg);
Apache Ignite ne fournit pas ces types de capacités de sécurité avec sa version open source. On peut soit la mettre en œuvre seuls à utiliser votre propre distribution de réseau commercial.
Voici les étapes à suivre pour implémenter un plug-in personnalisé de sécurité. P>
Il faudrait implémenter dans GridsecurityProcessor code> qui serait Soyez utilisé pour authentifier le nœud de jonction. P>
GridsecurityProcessor code>, vous devrez mettre en œuvre
authenticatenode () code> API comme suit P>
@Override
protected void initLocalNode(int srvPort, boolean addExtAddrAttr) {
try {
super.initLocalNode(srvPort, addExtAddrAttr);
this.setSecurityCredentials();
} catch (Exception e) {
e.printStackTrace();
}
}
private void setSecurityCredentials() {
if (securityCredentials != null) {
Map<String,Object> attributes = new HashMap<>(locNode.getAttributes());
attributes.put(IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS, securityCredentials);
this.locNode.setAttributes(attributes);
}
}