После многих часов исследований я нашел решение, поэтому я опубликую его здесь на случай, если кому-то понадобится 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&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.