Liferay с несколькими поддоменами и CAS - PullRequest
0 голосов
/ 15 декабря 2011

Мы успешно настроили портал Liferay, чтобы иметь несколько организаций, сопоставленных с разными поддоменами (то есть test1.domain.com, test2.domain.com).

Проблема возникает, когда мы включаем CAS в Liferay. Сервер CAS находится на сайте www.domain.com. Мы заметили, что когда вы пытаетесь войти в один из поддоменов (например, test1.domain.com), он перенаправляется в CAS, а затем CAS перенаправляет обратно в Liferay. Однако вместо того, чтобы перенаправлять обратно на test1.domain.com, он перенаправляет обратно на www.domain.com. Похоже, что когда Liferay изначально перенаправляет на CAS, он не отправляет поддомен как часть URL-адреса службы, а вместо этого отправляет www.domain.com для URL-адреса службы.

Я знаю, что вы можете установить URL-адрес службы CAS в Liferay, но нам нужно, чтобы он был динамическим в зависимости от того, в какую организацию / поддомен Liferay вы пытаетесь войти. Так что если вы заходите на test1.domain.com, URL-адрес службы, отправляемый в CAS, будет выглядеть примерно так: service = http://test1.domain.com

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 17 мая 2017

Вы можете создать хук, модифицировать CASFilter.Class extends BaseFilter

    public boolean isFilterEnabled(HttpServletRequest request, HttpServletResponse response)
  {
    try
    {
      long companyId = PortalUtil.getCompanyId(request);

      boolean CAS_AUTH_ENABLED_VALUE = GetterUtil.getBoolean(
        PropsUtil.get(CAS_AUTH_ENABLED));

      Boolean CAS_AUTH_ENABLE_CONFIG = GetterUtil.getBoolean(
                PrefsPropsUtil.getString(companyId, 
                        CAS_AUTH_ENABLED));

      boolean CAS_AUTH_ENABLE_VALUE_FINAL = Validator.isNotNull(CAS_AUTH_ENABLE_CONFIG) ? CAS_AUTH_ENABLE_CONFIG : CAS_AUTH_ENABLED_VALUE;


      if (CAS_AUTH_ENABLE_VALUE_FINAL) {
        return true;
      }
    }
    catch (Exception e)
    {
      _log.error(e, e);
    }
    return false;
  }

  protected Log getLog()
  {
    return _log;
  }
0 голосов
/ 15 декабря 2011

Вы можете изменить com.liferay.portal.servlet.filters.sso.cas.CASFilter или создать собственный фильтр на его основе.

URL-адрес службы создается в методе processFilter, в нем можно изменить то, что он не использует «URL-адрес службы» из конфигурации, но построить его на основе свойств входящего запроса (схема, имя_сервера, ...).

...