Jaas нужна политика Java, я не знаю, как ее обеспечить - PullRequest
0 голосов
/ 15 марта 2011

Я пытаюсь использовать Jaas, службу аутентификации и авторизации Java. Сервер является App Engine, поэтому невозможно редактировать web.xml . Я использую фильтр сервлетов, например:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
    throws IOException, ServletException {
    try {
        LoginContext lc = new LoginContext("JaasSample", new AuthenticationCallbackHandler());
        lc.login();
        chain.doFilter(request, response);
        lc.logout();
    } catch (LoginException e) { /* lc.login() fails */}
}

Вызов LoginContext проверяет политику и выдает следующее исключение:

java.security.AccessControlException: 
access denied (javax.security.auth.AuthPermission createLoginContext.JaasSample)

Код, который я использую, взят из Ссылка на Oracle . Они объясняют, что в присутствии диспетчера безопасности необходимо предоставить некоторые права следующим образом:

grant {
    permission javax.security.auth.AuthPermission "createLoginContext.JaasSample";
}

Я просто не понимаю, почему это должно быть сделано в банке.

Я могу обойти эту проверку с помощью -D - enable_all_permissions = true в конфигурации запуска. (Но это должно быть решено, чтобы перейти в prod), а затем, файл конфигурации Jaas ищется в System.getProperty ("user.home") /. Java.login.config. Не лучше ли быть в ресурсах проектов? Как это может работать в местном / в производстве?

Файл конфигурации имеет вид:

JaasSample {
    com.sun.security.auth.module.Krb5LoginModule required;
};

Большое спасибо.

пс. Spring Security можно использовать с Jaas и работает на App Engine. имп. Spring Security нельзя использовать, потому что он запускает контекст Spring, который замедляет запуск App Engine. И запуск в этой среде происходит постоянно.

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Проблема существует только в режиме App Engine Dev Mode; После доставки их нет такого исключения.

Итак, достаточно использовать -D--enable_all_permissions=true в Run Configuration.

0 голосов
/ 15 марта 2011

Используйте policytool из каталога $ JAVA_HOME / bin, чтобы предоставить разрешение.

...