2012-05-26 1 views
0

У меня возникла проблема с моими декларативными записями безопасности в web.xml.Объявление названия роли защищенной безопасности, содержащее звездочку, не работает

Следующие записи не позволяют мне получить доступ к странице, хотя я являюсь членом группы *ADL - Education Group. В конечном итоге я направляюсь на страницу login-noauth.

Я знаю, что это должно сработать - если я изменю его на другую группу (например, AT - Tech Support), он отлично работает. Я подозрительно отношусь к ведущему «*» в имени группы и пытался использовать CDATA в web.xml, но это не сработало. Я не могу контролировать элементы Active Directory, поэтому я не могу изменить имя группы. Другие названия групп с тире и пробелами работают нормально.

Я проверял, что являюсь членом группы *ADL - Education Group.

Это простой сервер tomcat 6.0.

Кто-нибудь знает, в чем проблема и как ее исправить?

<error-page> 
    <error-code>403</error-code> 
    <location>/pages/login/login-noauth.jsf</location> 
</error-page> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/pages/login/login.jsf</form-login-page> 
     <form-error-page>/pages/login/login-fail.jsf</form-error-page> 
    </form-login-config> 
</login-config> 

<security-constraint> 
    <display-name>Batch Security</display-name> 
    <web-resource-collection> 
     <web-resource-name>Batch Security</web-resource-name> 
     <url-pattern>/pages/batch/batch-status.jsf</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*ADL - Education Group</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-role> 
    <description>Everyone</description> 
    <role-name>*ADL - Education Group</role-name> 
</security-role> 
+0

Кажется, проблема с Tomcat. Попробуйте ускользнуть от него с помощью \ like так: '\ * ADL - Education Group'. – BalusC

+0

Да, я пробовал это, не работал. Спасибо хоть. –

+0

Я также пробовал * в качестве замены для "*". Все еще не работает. –

ответ

0

Моя проблема была в файле server.xml в определении Realm. Оказывается, что все группы AD, начинающиеся с «*», по-разному определяются в AD, чем другие группы. В частности, они имеют другое различающееся имя, определяющее другую roleBase. Итак, как только я изменил свой атрибут roleBase в элементе Realm server.xml, он отлично работал, как и нет, никаких обратных косых черт или переводов символов не требуется.

Мое редактирование в roleBase было просто указать только те части отличительного имени, которые были общими для обоих типов групп.

В одном случае, отмеченное имя:

CN=*ADL - Education Group,OU=ADLS,OU=IdM,DC=ROOT,DC=com 

и в другом случае, различающееся имя:

CN=AT - Tech Support,OU=Distribution Groups,OU=AG1-Place-Company,OU=Americas,OU=Exchange,DC=ROOT,DC=com 

Итак, что работает как roleBase на сервере. xml-файл:

roleBase="DC=ROOT,DC=com"