/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.datastore.mongodb.options; import com.mongodb.MongoCredential; /** * Available authentication methods for MongoDB. * * @see com.mongodb.MongoCredential * @author Davide D'Alto * @author Emmanuel Bernard <emmanuel@hibernate.org> */ public enum AuthenticationMechanismType { GSSAPI { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createGSSAPICredential( username ); } }, /** * @deprecated since MongoDB 3.0, use {@link #SCRAM_SHA_1} or {@link #BEST} */ @Deprecated MONGODB_CR { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createMongoCRCredential( username, databaseName, asCharArray( password ) ); } }, PLAIN { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createPlainCredential( username, databaseName, asCharArray( password ) ); } }, MONGODB_X509 { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createMongoX509Credential( username ); } } , SCRAM_SHA_1 { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createScramSha1Credential( username, databaseName, asCharArray( password ) ); } }, /** * The client will negotiate the best mechanism based on * the version of the server that the client is authenticating to. */ BEST { @Override public MongoCredential createCredential(String username, String databaseName, String password) { return MongoCredential.createCredential( username, databaseName, asCharArray( password ) ); } } ; private static char[] asCharArray(String password) { if ( password == null ) { return null; } return password.toCharArray(); } public abstract MongoCredential createCredential(String username, String databaseName, String password); }