Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аутентификация в WebSphere, как настроить ? 
V
    Опции темы
vzf
Дата 8.4.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: 2
Всего: 5



Добрый день.

Мне понадобилось реализовать аутентификацию и авторизацию для веб-приложения, работающего в вебсфере 6.1. Для простоты необходимо, чтобы пользователей можно было прописывать в файле.

Посмотрел документацию к вебсфере и увидел, что она предоставляет возможность реализации своего хранилища пользователей (при помощи реализации интерфейса UserRegistry). В качестве примера там приводится реализация хранения информации о пользователях в обычном текстовом файле - FileRegistrySample - как раз то , что мне нужно. Этот класс уже есть в вебсфере. Через админ-консоль я настроил сферу, чтобы она использовала в качестве хранилища пользователей - custom registry - FileRegistrySample. Вроде бы сфера поняла. что я от нее хочу. 

В файле web.xml приложения я добавил тэги разграничивающие доступ к ресурсам. 

Код

    <!-- Environment entries -->
    <security-constraint>
        <display-name>test constraint</display-name>
        <web-resource-collection>
            <web-resource-name>test</web-resource-name>
            <description>test</description>
            <url-pattern>/htdocs/BillFormList.jsf</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
            <http-method>HEAD</http-method>
            <http-method>PUT</http-method>
            <http-method>OPTIONS</http-method>
            <http-method>TRACE</http-method>
            <http-method>DELETE</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description>admin</description>
            <role-name>admin</role-name>
        </auth-constraint>
        </security-constraint>
  
       <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>test basic realm</realm-name>
      </login-config>
    <security-role>
        <description>test role</description>
        <role-name>test</role-name>
    </security-role>


Для простоты указал тип аутентификации BASIC.

Но проблема в том, что сфера не проводит аутентификацию. При запросе защищаемого ресурса мне сразу выдается 403 ошибка. Видимо необходимо как то настроить сферу или я чего-то не так делаю. Кто-нибудь сталкивался с такой задачей ? Может можно подругому сделать так, чтобы при аутентификации сфера брала сведения о пользователях из файла и уже на основании этих сведений можно было разграничивать доступ стандартными способами - декларативно (в web.xml) или программно (request.isUserInRole()) ?


--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
ekr
Дата 8.4.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



У тебя в защищаемом ресурсе указана роль admin, но её нет в декларациях, а есть только test role


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
vzf
Дата 8.4.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: 2
Всего: 5



Точно, спасибо smile исправил. Но все равно не работает выдается ответ Error 403: AuthorizationFailed

Вот исправленный web.xml

Код


    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>test basic realm</realm-name>
    </login-config>

    <security-role>
        <description>test admin role</description>
        <role-name>admins</role-name>
    </security-role>

    <security-constraint>
        <display-name>test constraint</display-name>
        <web-resource-collection>
            <web-resource-name>test</web-resource-name>
            <description>test</description>
            <url-pattern>/htdocs/*</url-pattern>
            <url-pattern>/index.html</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description>admins</description>
            <role-name>admins</role-name>
        </auth-constraint>
     </security-constraint>


welcome file у приложения - index.html . С него идет редирект на app-root/htdocs/system/LoginPage.jsf

Поэтому я указываю
Код

<url-pattern>/htdocs/*</url-pattern>
<url-pattern>/index.html</url-pattern>


Вот так выглядит файл с пользователями - Users.props :

Код

# 5722-IWE
# (C) COPYRIGHT International Business Machines Corp. 1997, 2003
# All Rights Reserved * Licensed Materials - Property of IBM
#
# Format:
# name:passwd:uid:gids:display name
# where name   = userId/userName of the user
#       passwd = password of the user
#       uid    = uniqueId of the user
#       gid    = groupIds of the groups that the user belongs to
#       display name = a (optional) display name for the user.
admin:admin:122:567,678:admin user
bob:bob1:123:567:bob
dave:dave1:234:678:dave
jay:jay1:345:678,789:Jay-Jay
ted:ted1:456:678:Teddy G
jeff:jeff1:222:789:Jeff
vikas:vikas1:333:789:vikas
bobby:bobby1:444:789:bobby


Файл с группами (я так понимаю что группы в конечном итоге и есть роли) Groups.props следующий:

Код

# 5722-IWE
# (C) COPYRIGHT International Business Machines Corp. 1997, 2003
# All Rights Reserved * Licensed Materials - Property of IBM
#
# Format:
# name:gid:users:display name
# where name   = groupId of the group
#       gid    = uniqueId of the group
#       users  = list of all the userIds that the group contains
#       display name = a (optional) display name for the group.
admins:567:admin,bob:Administrative group
operators:678:jay,ted,dave:Operators group
users:789:jay,jeff,vikas,bobby:Users group


При наборе в браузере http://localhost:9080/app-root/index.html и http://localhost:9080/app-root/htdocs/system/LoginPage.jsf

сразу же выдается страница с сообщением Error 403: AuthorizationFailed 

Думаю мне стоит попробовать проделать тоже самое на каком-нибудь простом приложении a`la hello world без всяких jsf-facelets, чтобы проще понять в чем дело.

Посмотрел логи сервера , нашел следующую сточку:

Код


[08.04.08 18:22:45:032 MSD] 00000023 WebCollaborat A   SECJ0129E: Ошибка идентификации для admin при вызове GET в default_host:sono-web/htdocs/system/LoginPage.jsf, Authorization failed, Not granted any of the required roles: admins 





Это сообщение отредактировал(а) vzf - 8.4.2008, 17:25
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
ekr
Дата 8.4.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Цитата(vzf @  8.4.2008,  17:14 Найти цитируемый пост)
я так понимаю что группы в конечном итоге и есть роли

Нет. 
Роли - абстракции, необходимые при сборке приложения, т.к. на этом этапе еще не известно, на какой конечный сервер будет это приложение развернуто, соответственно, неизвестны и пользователи с группами. 
Посему надо при развертывании замеппить определенных администратором принципалов (юзеры или лучше группы) на роли. Т.е. определить, какие принципалы играют какие роли.
Веб-консоль вебсферы спрашивает этот меппинг при развертывании - посмотри внимательнее экраны при развертывания. Если развертывание идет не с помощью веб-консоли, но нужен специфический дескриптор в составе приложения, в котором этот меппинг будет определен.


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
vzf
Дата 9.4.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: 2
Всего: 5



Спасибо большое.  smile  Точно, я пропустил, при развертывании приложения в веб-консоли действиетльно надо указывать соответствие ролям описанным в web.xml приложения пользователей или групп, определенных в хранилище пользователей, используемом вебсферой. Состряпал тестовое приложение, установил, вроде работает. Теперь можно двигаться дальше smile  
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.