Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions pillar.example
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,28 @@ tomcat:
# Change to realpath before setting "SSLEnabled: 'true'"
keystoreFile: '/path/to/keystoreFile'
keystorePass: 'somerandomtext'

# User encrypted passwords with LokoutRealm
realm:
"org.apache.catalina.realm.LockOutRealm":
name: "org.apache.catalina.realm.LockOutRealm"
realm:
name: "org.apache.catalina.realm.UserDatabaseRealm"
realm_parameters:
resourceName: "UserDatabase"
value: '<CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="md5"/>'

# User encrypted passwords without LokoutRealm
realm:
"org.apache.catalina.realm.UserDatabaseRealm":
name: "org.apache.catalina.realm.UserDatabaseRealm"
realm_parameters:
resourceName: "UserDatabase"
value: '<CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="md5"/>'

# Password encryption command
# /usr/share/tomcat8/bin/digest.sh -a md5 -h org.apache.catalina.realm.MessageDigestCredentialHandler PASSWORT

sites:
# unique; used as salt ID and in template as `host_name` if
# `name` is not declared
Expand Down
8 changes: 8 additions & 0 deletions tomcat/config.sls
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ tomcat 100_server_xml:
- require_in:
- file: tomcat server_xml

tomcat 110_server_xml:
file.accumulated:
- name: 110_server_xml
- filename: {{ tomcat.conf_dir }}/server.xml
- text: {{ tomcat.realm }}
- require_in:
- file: tomcat server_xml

tomcat 500_server_xml:
file.accumulated:
- name: 500_server_xml
Expand Down
1 change: 1 addition & 0 deletions tomcat/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ tomcat:
soft: 64000
hard: 64000
connectors: {}
realm: {}
sites: {}
resources: {}

Expand Down
57 changes: 47 additions & 10 deletions tomcat/files/server.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{%- set connectors = accumulator['100_server_xml'][0] if '100_server_xml' in accumulator else {} -%}
{%- set realm = accumulator['110_server_xml'][0] if '110_server_xml' in accumulator else {} -%}
{%- set sites = accumulator['300_server_xml'][0] if '300_server_xml' in accumulator else {} -%}
{%- set resources = accumulator['500_server_xml'][0] if '500_server_xml' in accumulator else {} -%}
{%- set cluster = accumulator['600_server_xml'][0] if '600_server_xml' in accumulator else {} -%}
Expand Down Expand Up @@ -105,6 +106,52 @@
/>
{% endif %}
<Engine name="Catalina" defaultHost="localhost"{% if cluster %} jvmRoute="{{ grains['nodename'] }}"{% endif %}>

{% if realm -%}
{%- for id, realm in realm.items() %}
{%- set class_name = realm.name if realm.name is defined else id -%}
<Realm className="{{ class_name }}"
{%- if realm.realm_parameters is defined -%}
{% for k, v in realm.realm_parameters.items() %}
{{ k }}="{{ v }}"
{%- endfor -%}
{%- endif -%}
>
{%- if realm.value is defined %}
{{ realm.value }}
{%- endif %}

{% if realm.realm is defined and realm.realm.name is defined %}
{%- set subrealm = realm.realm -%}
<Realm className="{{ subrealm.name }}"
{%- if subrealm.realm_parameters is defined -%}
{% for k, v in subrealm.realm_parameters.items() %}
{{ k }}="{{ v }}"
{%- endfor -%}
{%- endif -%}
>
{%- if subrealm.value is defined %}
{{ subrealm.value }}
{%- endif %}
</Realm>
{% endif -%}
</Realm>
{%- endfor -%}

{% else %}
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"
/>
</Realm>
{% endif %}

{% if cluster %}
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
Expand All @@ -129,16 +176,6 @@
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
{% endif %}
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

{% if sites %}
{% for id, site in sites.items() %}
Expand Down