Проблема с авторизацией Payara/Glassfish 5

У меня есть устаревшее приложение Java EE, развернутое в GlassFish 5.0.1. Он использует специальную область для аутентификации пользователей. При входе в систему и попытке доступа к защищенному ресурсу всегда выдает ошибку 403.

Приложение раньше работало на Java EE 7 и Glassfish 4 и пыталось запустить его на Java EE 8 и Glassfish/Payara 5.

В новой среде я могу без проблем войти в приложение. Проблема возникает при попытке доступа к защищенному URL-адресу.

Default Principal To Role Mappingопция не отмечена в Glassfish.

Я попробовал очиститьgeneratedкаталог, а также повторное развертывание.

Пробовал также развертывание в Payara 5. Имею ту же проблему.

Причина, кажется, в томrequest.isUserInRoleв пользовательском диспетчере безопасности всегда возвращаетсяfalse.

      public boolean isUserInRole(List<String> roles, HttpServletRequest request, HttpServletResponse response)
{
            
    if (roles == null || roles.size() < 1)
        return false;

    if (request.getUserPrincipal()==null)
    {
        return false;
    }

    for (String role : roles)
    {
        if (request.isUserInRole(role.trim()))
        {
            return true;
        }
    }
    
    return false;
}

glassfish-web.xmlфайл как показано ниже

      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <context-root>/abc</context-root>
  <security-role-mapping>
        <role-name>ABC_MAS</role-name>
        <group-name>ABC_MAS</group-name>
  </security-role-mapping>
      
  <class-loader delegate="false"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
  
  <property name="securePagesWithPragma" value="false" />
</glassfish-web-app>

web.xmlсодержит следующее

      <web-app>
  ...
  <security-constraint>
    <display-name>Test application</display-name>
    <web-resource-collection>
      <web-resource-name>Secure Pages</web-resource-name>
      <description/>
      <url-pattern>/pages/secured/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
      <http-method>HEAD</http-method>
      <http-method>PUT</http-method>
      <http-method>OPTIONS</http-method>
      <http-method>TRACE</http-method>
      <http-method>DELETE</http-method>
    </web-resource-collection>
    <auth-constraint>
      <role-name>ABC_MAS</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>abcRealm</realm-name>
    <form-login-config>
      <form-login-page>/pages/login.action</form-login-page>
      <form-error-page>/pages/login.action</form-error-page>
    </form-login-config>
  </login-config>

  <security-role>
    <description/>
    <role-name>ABC_MAS</role-name>
  </security-role>
</web-app>

0 ответов

Другие вопросы по тегам