Как заставить @RunAs работать в @Webservice без принципала? - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь, чтобы объявленный в Glassfish @WebService мог вызывать EJB, который требует, чтобы пользователь был в заданной роли.На данный момент мой WebService не имеет аутентификации (и я сомневаюсь, что добавлю его в ближайшее время).

Соображения безопасности в стороне (я прекрасно знаю, что это не лучший способ сделать что-то, спасибо), поскольку я не вошелпользователь, мои WebServiceContext alays говорят мне context.isUserInRole("importer") хотя мой @WebService также помечен @RunAs("importer").

Как я могу заставить это работать?(конечно, без дополнительной защиты моего веб-сервиса).

1 Ответ

0 голосов
/ 23 марта 2012

Оказывается, ошибка не была ожидаемой.

Мой glassfish-web.xml был неверным, так как это было

<security-role-mapping>
    <role-name>guest</role-name>
    <principal-name>guest</principal-name>
    <group-name>users</group-name>
</security-role-mapping>

Похоже, что при обнаружении такой конфигурации Glassfish создает принципсодержащий только групповую спецификацию, а не главную.В результате я удалил строку group-name и все заработало.Мой glassfish-web.xml теперь содержит

<security-role-mapping>
    <role-name>guest</role-name>
    <principal-name>guest</principal-name>
</security-role-mapping>
...