Ограничение безопасности Tomcat для действительного пользователя

Я пытаюсь защитить ресурс в Tomcat, чтобы только "действительные пользователи" (те, кто имеет действительный логин и пароль в области) могут получить к нему доступ. Они не обязательно принадлежат к какой-либо группе в мире. Я пробовал со многими комбинациями<security-constraint> директива без успеха. Есть идеи?

Ответы на вопрос(3)

база данных, JAAS и многое другое. Самый простой способ настроить (хотя и не самый безопасный) модуль памяти, который содержит один файл XML, обычно в файле conf / tomcat-users.xml:

<tomcat-users>
  <user name="tomcat" password="tomcat" roles="tomcat" />
  <user name="role1"  password="tomcat" roles="role1"  />
  <user name="both"   password="tomcat" roles="tomcat,role1" />
</tomcat-users>

Конфигурация области находится под контекстом, конфигурациями хоста или движка, как это:

<Realm className="org.apache.catalina.realm.MemoryRealm"
       pathname="conf/tomcat-users.xml" />

Затем в файле web.xml вы поместите следующее определение:

    <security-constraint>
            <web-resource-collection>
                    <web-resource-name>MRC Customer Care</web-resource-name>
                    <url-pattern>/protected/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>role1</role-name>
            </auth-constraint>
    </security-constraint>

    <!-- Define the Login Configuration for this Application -->
    <login-config>
            <auth-method>DIGEST</auth-method>
            <realm-name>YOUR REALM NAME</realm-name>
    </login-config>

    <security-role>
            <description>
              The role that is required to access the application. 
              Should be on from the realm (the tomcat-users.xml file).
            </description>
            <role-name>role1</role-name>                  
    </security-role>

Часть web.xml взята (с небольшими изменениями) из одного из наших веб-приложений.

 Ricardo Marimon08 июл. 2009 г., 03:40
В моем конкретном окружении я подключаюсь к ldap с помощью JNDIRealm. Проблема в том, что я не могу включить группы в ldap и должен проходить аутентификацию на основе только имени пользователя и пароля без какой-либо роли. Я пытался использовать<role-name></role-name> а также<role-name>*</role-name> безуспешно

которое вы добавляете в ограничение безопасности:

   <auth-constraint>
       <role-name>*</role-name>
   </auth-constraint>

Вам нужно указать роль безопасности в веб-приложении:

    <security-role>
        <role-name>*</role-name>
    </security-role>
 Ricardo Marimon13 мая 2010 г., 03:45
Я попробую это и доложу.
 cschooley14 авг. 2013 г., 22:58
Есть ли способ добавить ограничение вне web.xml? Например. добавить ограничение для всех веб-приложений в дополнение к Realm / Valve в context.xml?
 André22 июн. 2010 г., 12:09
Добавление тега security-role было для нас решением. Благодарность
 cschooley14 авг. 2013 г., 23:45
Ответ выше - $ CATALINA_BASE / conf / web.xml. Видеть / Stackoverflow.com вопросы / 18242619 / ...

поскольку предоставленный server.xml будет входить во вложенный элемент Realm, добавьте 'allRolesMode = "authOnly" в элемент "outmost" Realm и измените вышеупомянутый web.xml для тестирования. например

  <Realm allRolesMode="authOnly" className="org.apache.catalina.realm.LockOutRealm">
    <!-- This Realm uses the UserDatabase configured in the global JNDI
         resources under the key "UserDatabase".  Any edits
         that are performed against this UserDatabase are immediately
         available for use by the Realm.  -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase" />
  </Realm>

Пожалуйста, прочитайте org.apache.catalina.realm.RealmBase.java для подробностей.

Также полезны следующие настройки в logging.properties.

org.apache.catalina.realm.level=ALL
org.apache.catalina.realm.useParentHandlers=true
org.apache.catalina.authenticator.level=ALL
org.apache.catalina.authenticator.useParentHandlers=true

Ваш ответ на вопрос