Создание мульти-арендатора tomcat для SaaS - PullRequest
1 голос
/ 30 сентября 2011

Наш сервер Tomcat обслуживает один военный файл, который обслуживается 3-мя разными идентичными базами данных для 3-х арендаторов.

Планируется использовать источник данных JNDI (3 источника данных) и использовать абстрактную фабрику для создания экземпляров необходимых подклассов для этого арендатора.

Хотите использовать управляемую контейнером аутентификацию.

Мы хотим использовать встроенные аннотации безопасности Java, такие как @RolesAllowed и т. Д. Аутентификация осуществляется через HTTP Basic Auth.Это прекрасно работает для одного арендатора (конфигурация по умолчанию).Однако я не могу придумать хорошего решения, где tomcat может идентифицировать клиента на основе контекста (https://server/resources/CLIENT1/Blah), а затем найти соответствующий JNDI для CLIENT1 / 2/3 и т. Д.

Мысли или предложения?

1 Ответ

3 голосов
/ 30 сентября 2011

Решено созданием виртуальных хостов

Создано два виртуальных хоста локальный localhost2

Создано две области (область UserDatabase для тестирования) UserDatabase UserDatabase2

Оба хоста указывают на один и тот же корень документа

При вызове http://localhost/service, realm UserDatabase используется и вызов http://localhost2/service, realm UserDatabase2 используется

Благодаря документам Tomcat ..

  <Service name="Catalina">
            <Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." resolveHosts="false" suffix=".txt"/>
            </Host>
            <Host appBase="webapps" autoDeploy="false" name="localhost2" unpackWARs="true">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase2"/>
            </Host>
        </Engine>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...