Использование @RunAs с другой файловой областью в Payara - PullRequest
0 голосов
/ 27 марта 2020

Я использую Payara 5.194 и создал веб-приложение (война). Это веб-приложение содержит синглтон с @Schedule, который периодически запускает какой-либо метод. Он использует @RunAs (), чтобы указать роль для использования.

@Singleton
@RunAs("system")
public class MySingleton {
  @EJB
  MyEjb myEjb;

  @Schedule(hour = "*", minute = "*", second = "*", persistent = false)
  public void go()
  {
    myEjb.doSomething(strings);
  }
}

Я использую файловую область по умолчанию, предоставленную Payara. Я добавил туда пользователя с системной ролью, и она отлично работает.

Теперь мне нужно было создать специфицированную c область файла для моего проекта:

asadmin \
    create-auth-realm \
    --classname com.sun.enterprise.security.auth.realm.file.FileRealm \
    --property "file=/opt/payara/appserver/glassfish/config/project_keyfile:jaas-context=fileRealm" \
    ProjectRealm

Я добавил пользователь

asadmin \
    --passwordfile passwordfile.txt \
    create-file-user \
    --authrealmname ProjectRealm \
    --groups group1:system \
    test

Когда я удаляю пользователя из области по умолчанию, вещи перестают работать, что логично.

Я хочу, чтобы система начала использовать новую область. Я попытался установить его в Интернете. xml без удачи:

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>ProjectRealm</realm-name>
</login-config>

Я знаю, что можно сказать Payara, что мое новое царство по умолчанию, но я не хочу этого делать. Кстати, это можно сделать следующим образом:

set configs.config.server-config.security-service.default-realm=ProjectRealm

. После дальнейшего исследования я обнаружил, что, если я заверну эту войну в ухо и предоставлю следующее в приложении glassfi sh. xml, тогда все будет работать нормально. .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Java EE Application 6.0//EN" "http://glassfish.org/dtds/glassfish-application_6_0-1.dtd">
<glassfish-application>
  <realm>ProjectRealm</realm>
</glassfish-application>

Таким образом, с помощью уха вполне возможно указать область по умолчанию для использования. И @RunAs будут соблюдать это. Но это приложение / ухо, и это не то, что я хочу.

Но мой вопрос: если я не использую ухо, есть ли способ указать область для использования?

1 Ответ

1 голос
/ 03 мая 2020

Я уверен, что вы столкнулись с ошибкой в ​​Payara Server, которая исправлена ​​здесь: https://github.com/payara/Payara/pull/4597. Исправление будет выпущено в следующей версии в ближайшее время.

Если вы хотите протестировать исправление, вы можете собрать Payara Server из главной ветки. Или просто создайте модуль dol и замените каталог dol.jar in modules на новый модуль.

...