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

6

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

Ваш Ответ

3   ответа
12

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

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

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

    <security-role>
        <role-name>*</role-name>
    </security-role>
Я попробую это и доложу. Ricardo Marimon
Добавление тега security-role было для нас решением. Благодарность André
Есть ли способ добавить ограничение вне web.xml? Например. добавить ограничение для всех веб-приложений в дополнение к Realm / Valve в context.xml? cschooley
Ответ выше - $ CATALINA_BASE / conf / web.xml. Видеть / Stackoverflow.com вопросы / 18242619 / ... cschooley
1

база данных, 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 взята (с небольшими изменениями) из одного из наших веб-приложений.

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

поскольку предоставленный 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

Похожие вопросы