Реализация единого входа в Tomcat - PullRequest
0 голосов
/ 26 марта 2020

У меня три веб-приложения jsf, развернутые на веб-сервере tomcat с включенным SSL / TLS. Теперь я хочу создать некую аутентификацию SSO с конкретными ролями. В tomcat conf / server. xml есть строка:

<Valve className="org.apache.catalina.authenticator.SingleSignOn" />

, поэтому я понял, что tomcat может иметь свою собственную реализацию SSO. Кто-нибудь знает, где можно найти дополнительную информацию об этом или некоторых примерах кода?

Заранее спасибо

1 Ответ

0 голосов
/ 27 марта 2020

После многих часов исследований я нашел решение, поэтому я опубликую его здесь на случай, если кому-то понадобится SSO-аутентификация в tomcat. Прежде всего, откройте файл conf / server. xml в каталоге установки tomcat и добавьте следующую строку:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    </Host>

Таким образом, вы открыли клапан SSO. Далее вам нужно настроить роли в Tomcat. Это делается путем редактирования conf / tomcat-users. xml. Прокрутите вниз и добавьте роли, например, так:

   <role rolename="CUSTOMER"/>
   <role rolename="ADMIN"/>

Теперь, если вы хотите аутентификацию в виде простого текста, вы можете добавить пользователей также, добавив:

<user username="admin" password="admin" roles="ADMIN"/>
<user username="customer" password="customer" roles="CUSTOMER"/>

или, если вы У вас есть база данных, вы можете установить соединение с сервером базы данных в conf / server. xml, я использую MySQL:

<Realm className="org.apache.catalina.realm.JDBCRealm"
  driverName="com.mysql.cj.jdbc.Driver"
   connectionURL="jdbc:mysql://localhost:3306/databaseName?user=serverUsername&amp;password=serverPassword"
       userTable="usersTable" userNameCol="usernameColumnName" userCredCol="passwordColumnName"
   userRoleTable="roleTable" roleNameCol="roleColumnName"/>

Примечание: вам необходимо предоставить драйвер соединения в tomcat lib каталог. Более подробная информация о: https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm

Наконец, в вашем веб-приложении или приложениях найдите веб. xml и добавьте ограничения безопасности:

<security-constraint>

 <web-resource-collection>
 <web-resource-name>Protected Context</web-resource-name>
 <url-pattern>/*</url-pattern>
 </web-resource-collection>

 <user-data-constraint>
 <transport-guarantee>CONFIDENTIAL</transport-guarantee>  
 </user-data-constraint>

 <auth-constraint>
        <role-name>ADMIN</role-name>
    </auth-constraint>

 </security-constraint>

  <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>this is ignored currently</realm-name>
    </login-config>


<security-role>
    <role-name>ADMIN</role-name>
</security-role>

Примечание: если у вас есть пользовательская страница входа, вы можете отредактировать тег <login-config> и изменить его на следующее:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/error.jsp</form-error-page>
    </form-login-config>
</login-config>

Cheers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...