Проблема двойной аутентификации для веб-службы REST, развернутой в WebLogic

У меня есть спокойный веб-сервис, защищенный с помощью аутентификации HTTP Basic с провайдером LDAP.

После развертывания приложения в WebLogic оно дважды запрашивает аутентификацию при вызове.

Сначала Spring Security, затем WebLogic Server.

Дальнейшее расследование по этому вопросу показывает, что client requests that use HTTP BASIC authentication must pass WebLogic Server authentication, even if access control is not enabled on the target resource.

В качестве опции (указанной в ответе) аутентификацию WebLogic можно отключить с помощью следующей конфигурации в config.xml:

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>

Но это повлияет на все остальные приложения, развернутые в том же домене. И я хочу это только для определенного приложения.

Цените любые предложения.


person Ahsan Shah    schedule 30.09.2014    source источник


Ответы (3)


Попробуйте отключить аутентификацию WebLogic в config.xml:

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>

См., например.

Таким образом, вы можете включить или выключить это для каждого домена. Если вам нужно настроить таргетинг на конкретное приложение, рассмотрите возможность размещения этого приложения в выделенном домене.

person Community    schedule 01.10.2014
comment
Спасибо, Вилли, но это отключит базовую аутентификацию weblogic для всех других приложений, развернутых в том же контейнере. - person Ahsan Shah; 01.10.2014
comment
на самом деле я не хочу отключать аутентификацию weblogic для всех, а только для определенного приложения. - person Ahsan Shah; 01.10.2014
comment
Судя по ссылкам, которые я предоставил, это похоже на дело «все или ничего». Поэтому вам может потребоваться создать выделенный домен WebLogic для рассматриваемого приложения. В любом случае, пожалуйста, обновите свой вопрос, чтобы указать это дополнительное ограничение. - person ; 01.10.2014

Обходной путь, добавьте еще один метод авторизации в web.xml:

<login-config>
    <auth-method>CLIENT-CERT</auth-method>
</login-config>

Приглашение базовой аутентификации Weblogic не будет отображаться, только ваше.

источник: http://forum.spring.io/forum/spring-projects/security/35977-weblogic-9x-10x-double-prompt-for-login-basic-auth-simple

person Soapr    schedule 15.02.2019

Начал работать после добавления ниже конфигурации. Но требуется добавить нового пользователя в консоль weblogic, или мы можем использовать пользователя по умолчанию.

Добавлена ​​конфигурация ниже в файле WEB-INF\web.xml

  <security-constraint>
    <display-name>Secure REST Area</display-name>
    <web-resource-collection>
        <web-resource-name>Secure REST</web-resource-name>
        <url-pattern>/api/*</url-pattern>
        <http-method>POST</http-method>
    </web-resource-collection>

    <auth-constraint>
        <role-name>Admin</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>default</realm-name>
</login-config>

<security-role>
    <role-name>Admin</role-name>
</security-role>

создал файл дескриптора weblogic в WEB-INF\weblogic.xml и добавил конфигурацию ниже.

<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <security-role-assignment>
     <role-name>Admin</role-name>
     <!-- <principal-name>Administrators</principal-name>-->
     <externally-defined/>
 </security-role-assignment>

person rsh    schedule 13.12.2016