Как происходит процесс входа в реальный мир в веб-приложении на Java? - PullRequest
2 голосов
/ 18 марта 2010

Я очень озадачен процессом входа в систему, который происходит в веб-приложении Java. Я прочитал много уроков, касающихся jdbcRealm и JAAS. Но одна вещь, которую я не понимаю, это то, почему я должен их использовать? Разве я не могу просто проверить свою базу данных пользователей? и как только они успешно войдут на сайт, я сохраню некоторую переменную в сеансе как флаг. И, возможно, проверьте эту переменную сеанса на всех запрещенных страницах (я имею в виду сохранить фильтр для шаблона URL-адресов ограниченных ресурсов). Если флаг не существует, просто перенаправьте пользователя на страницу входа. Является ли этот подход правильным? Звучит ли это правильно? Если да, то почему все это JAAS и jdbcRealm появились?

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

Пожалуйста, помогите мне. Я действительно очень смущен. Я читаю уроки Sun, но они только продолжают говорить о теориях. Чтобы программисты могли понять простую концепцию, они сначала показывают теорию на 100 страниц, прежде чем, наконец, приходят к одному примеру.

Ответы [ 2 ]

1 голос
/ 18 марта 2010

Да, вы можете сделать это самостоятельно.

Однако эти вещи существуют, поэтому вам не нужно реализовывать это самостоятельно. Они написаны очень умными людьми, они проверены, это работает. Если вы хотите сделать это самостоятельно, вы уверены, что не будете вносить какие-либо ошибки? Вы уверены, что пользователи не смогут обойти логин? (в прошлый раз, когда я видел, как кто-то реализовал это сам, пользователь мог просто обойти проверку URL, перейдя к http://site.com/foo/../foo/bar вместо ввода обычного URL-адреса http://site.com/foo/bar)

Что касается примера использования, например jdbcrealm с Tomcat для базовой HTTP-аутентификации см. здесь . Вы создаете таблицы и т. Д., Как описано там. В вашем веб-приложении вы создаете файл META-INF / context.xml, который может выглядеть следующим образом:

<context>
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
      driverName="com.mysql.Driver"
   connectionURL="jdbc:mysql://localhost/mydb?user=dbuser&amp;password=dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"
   userRoleTable="user_roles" roleNameCol="role_name"/>
</context>

В своем WEB-INF / web.xml вы добавляете что-то вроде этого:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Entire Application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>USER</role-name>
    </auth-constraint>
  </security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>MyWebapp Login</realm-name>
</login-config>

(Этот пароль защищает все ваше веб-приложение, вы можете ограничить его, например, только URL-адресами вашего веб-сервиса. Авторизованным пользователям, имеющим роль ПОЛЬЗОВАТЕЛЬ, будет предоставлен доступ.

Добавить пользователя в базу данных с чем-то вроде этого SQL

insert into users values('bob','secretpassword');
insert into roles values('bob','USER');

Затем вы помещаете файл .jar драйвера JDBC в $ CATALINA_HOME / lib /, и все готово.

1 голос
/ 18 марта 2010

Многие реальные веб-приложения движутся к функциональности Single Sign On . То, что они делают, очень похоже на то, что вы описали, т. Е. В вашем приложении будет работать какой-то агент, который будет перехватывать запросы и проверять файлы cookie, сеанс, аутентификацию и т. Д. На каком-то внешнем сервере, который отвечает за поддержку базы данных пользователи, разрешения, группы, роли и т. д. В зависимости от того, как вы его настроили, запросы будут разрешены или запрещены.

Суть в том, что вы должны иметь возможность писать свое приложение, не беспокоясь слишком много о сквозных функциях, таких как аутентификация, авторизация и т. Д.

Вы можете взглянуть на OpenSSO , OpenSSO wiki , others

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...