Самое главное - убедиться, что Tomcat не устанавливает свой собственный Authenticator в ответ на указание BASIC в качестве схемы аутентификации.Расширение из AuthenticatorBase - отличная идея, и вы можете избежать стандартного аутентификатора Tomcat, настроив свой аутентификатор в файле META-INF / context.xml вашего приложения.
Далее вам потребуется реализовать два метода.AuthenticatorBase
:
boolean doAuthenticate(Request request, HttpServletResponse response)
String getAuthMethod()
Второй способ прост: вернуть все, что вы хотите.Возможно, вы захотите, чтобы это имело какой-то смысл, например "IBMSAM"
.
Первый, конечно, где лежит мясо аутентификатора.
Если вы можете получить все, что вынужно от request
, тогда это здорово: оно уже есть, так что вы можете получить то, что вам нужно.Ваш метод должен сделать две вещи:
- Установить
principal
запроса на соответствующее значение (например, request.setUserPrincipal(new GenericPrincipal(username, null, roles));
- Return
true
Я думаю, как только вы начнете работать с простой ситуацией, вы сможете поиграть с крайними случаями оттуда.