Используйте JAAS для пароля LDAP с безопасностью Spring
У меня есть веб-приложение Java EE, которое использует аутентификацию LDAP. Я использую Spring security для подключения к моему LDAP с помощью следующего кода:
На самом деле, мой бобWebsphereCredentials
использует закрытый класс WebSphereWSMappingCallbackHandlerFactory
как в этом ответе:Как получить доступ к псевдониму аутентификации из EJB, развернутого в Websphere 6.1
Мы можем видеть это в официальной документации Websphere:http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frsec_pluginj2c.html
Но я нене хочу, потому что:
Я думаю, что мое приложение может получить доступ ко всем именам входа JAAS в моем экземпляре WebSphere (не уверен).Этот класс определен в клиентской библиотеке HUGE IBM com.ibm.ws.admin.client-7.0.0.jar (42 Mo) => Компиляция медленнее, нет в моем предприятии NexusЭто'не портативный, не стандартныйДля информации я определяюWebsphereCredentials
конструктор как это:
Map map = new HashMap();
map.put(Constants.MAPPING_ALIAS, this.jndiAlias);
Subject subject;
try {
CallbackHandler callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler(map, null);
LoginContext lc = new LoginContext("DefaultPrincipalMapping", callbackHandler);
lc.login();
subject = lc.getSubject();
} catch (NotImplementedException e) {
throw new EfritTechnicalException(EfritTechnicalExceptionEnum.LOGIN_CREDENTIAL_PROBLEM, e);
} catch (LoginException e) {
throw new EfritTechnicalException(EfritTechnicalExceptionEnum.LOGIN_CREDENTIAL_PROBLEM, e);
}
PasswordCredential cred = (PasswordCredential) subject.getPrivateCredentials().toArray()[0];
this.user = cred.getUserName();
this.password = String.valueOf(cred.getPassword());
Есть ли способ использовать только безопасность Spring и удалить эту зависимость?
Я понятия не имею, как совместитьhttp://static.springsource.org/spring-security/site/docs/3.1.x/reference/jaas.html а такжеhttp://static.springsource.org/spring-security/site/docs/3.1.x/reference/ldap.html.
Может быть, я должен полностью изменить свой подход и использовать другой способ?>