Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
1f51ce8
Update serverapplication.yml.j2
Tyskai Jul 29, 2025
64c1a89
Added email.serviceDeskEmail placeholder
oharsta Nov 12, 2025
961ffa8
#769 Make affiliation email more configurable
Liemine Nov 17, 2025
0960373
Merge branch 'main' into feature/#769-make-scopedaffiliation-configur…
oharsta Nov 18, 2025
234b5d9
Merge remote-tracking branch 'origin/feature/#769-make-scopedaffiliat…
oharsta Nov 18, 2025
3d1f884
Fixed indentation for myconext
oharsta Nov 18, 2025
06a6381
WIP for https://github.com/OpenConext/OpenConext-attribute-aggregatio…
oharsta Nov 19, 2025
6a43eec
Merge remote-tracking branch 'origin/feature/add_eduid_acr_values' in…
oharsta Nov 20, 2025
6b68917
Fixes https://github.com/OpenConext/OpenConext-attribute-aggregation/…
oharsta Nov 20, 2025
05b0831
Fixes https://github.com/OpenConext/OpenConext-myconext/issues/757
Nov 20, 2025
c930adf
#757 Replaces hardcoded value with variable
Nov 20, 2025
14bff9a
Merge pull request #567 from OpenConext/feature/757-feature-toggle-en…
oharsta Nov 20, 2025
48bdd9a
Fixes https://github.com/OpenConext/OpenConext-myconext/issues/759 Ad…
ricardovdheijden Nov 24, 2025
f048ae3
Merge pull request #571 from OpenConext/feature/759-feature-toggle-us…
oharsta Nov 24, 2025
ec66f79
Merge branch 'main' into develop
oharsta Nov 24, 2025
cf73225
#1001 Add email addresses
Liemine Nov 25, 2025
19d0a48
Added missing attributes from feature branch
oharsta Nov 25, 2025
52528ec
Merge branch 'feature/#769-make-scopedaffiliation-configurable' into …
Liemine Nov 25, 2025
42930f8
Merge branch 'feature/#769-make-scopedaffiliation-configurable' into …
Liemine Nov 25, 2025
7f85717
Merge branch 'feature/#1001-different-email-from-for-nudges-and-warni…
Liemine Nov 25, 2025
9b0db98
Added languages for invite
oharsta Nov 26, 2025
0cafab3
Merge branch 'main' into develop
baszoetekouw Nov 26, 2025
9a481e4
Merge branch 'main' into develop
baszoetekouw Nov 26, 2025
9026265
Added missing mongodb_db variable for myconext CRON jobs
oharsta Nov 29, 2025
6a30219
#1024 Add mail-institution-batch-size to 500 and set mail-institution…
Liemine Dec 1, 2025
2456b25
Merge branch 'feature/#1024-send-institutionmailwarning-in-smaller-ba…
Liemine Dec 1, 2025
7a23f86
#802-differentiate-error_mail-configurable-for-prod-and-non-prod-develop
Liemine Dec 2, 2025
1feb140
Merge pull request #582 from OpenConext/feature/#802-differentiate-er…
Liemine Dec 2, 2025
10431c9
https://github.com/OpenConext/OpenConext-access/issues/322
oharsta Dec 2, 2025
09428ab
Merge branch 'feature/access-support-mail' into develop
oharsta Dec 2, 2025
2744db6
Merge branch 'main' into feature/open-access
oharsta Dec 5, 2025
7554335
Merge branch 'openaccess' into feature/open-access
oharsta Dec 5, 2025
118a47b
Merge branch 'feature/open-access' into develop
oharsta Dec 5, 2025
4b29f86
test2 uit serverapplication.yml.j2
Tyskai Dec 5, 2025
6c25ee4
do not show minio root ww
crosmuller Dec 5, 2025
b17b097
Add some debugging
crosmuller Dec 11, 2025
2e366f2
network variable was not used in container creation
crosmuller Dec 11, 2025
6f47902
Merge remote-tracking branch 'origin/main' into feature/open-access
Tyskai Mar 10, 2026
1829d45
Update serverapplication.yml.j2
Tyskai Mar 12, 2026
338d4d2
docker fix en stats eruit?
Mar 12, 2026
ed069e3
Update serverapplication.yml.j2 with stats variables
Tyskai Mar 12, 2026
923793e
Update serverapplication.yml.j2 voor OIDCNG
Tyskai Mar 12, 2026
0410d4a
het iig werkend maken voor test2
Mar 13, 2026
42882df
update van serviceapplication yml
Mar 30, 2026
52b4fb2
Do not purge Invite audit log yet (#648)
phavekes Apr 9, 2026
5a6cdf4
Fix/pin traefik version (#645)
crosmuller Apr 10, 2026
3137cf0
Use shedlock in invite
phavekes Apr 10, 2026
4b4db87
rsyslog: Only opdate the lastseen tabel for newer dates
phavekes Nov 4, 2025
0cff50e
rsyslog: Also rotate and parse stepup-logs
phavekes Nov 4, 2025
c255aa4
rsyslog: Add ansible tasks for stepup log parsing
phavekes Nov 4, 2025
ff6862d
Fix name for parse_stepupauth template
phavekes Apr 10, 2026
4089da9
Fix template name
phavekes Apr 10, 2026
5e0ec79
Disable check for authentication_result
phavekes Apr 10, 2026
5a7b328
Get data from the context object
phavekes Apr 10, 2026
adf12d2
Get data from the context object
phavekes Apr 10, 2026
a7aa40d
Log if data checks failed
phavekes Apr 10, 2026
6669321
more robust parsing of data
phavekes Apr 10, 2026
0107394
Add python3-dateutil to rsyslog role
phavekes Apr 10, 2026
eccfa6c
Replace Teams with Invite as default provider for voot (#632)
thijskh Apr 13, 2026
ca39d8e
Fixed typo
oharsta Apr 13, 2026
e4efb21
Merge pull request #649 from OpenConext/feature/shedlock-locking
oharsta Apr 13, 2026
5bcf892
#1042 Add create-from-institution return-url-allowed-domains
Liemine Apr 14, 2026
78af9df
Merge branch 'main' into feature/open-access
baszoetekouw Apr 15, 2026
b0aeac0
fix config
baszoetekouw Apr 15, 2026
801d148
Merge remote-tracking branch 'origin/main' into feature/open-access
baszoetekouw Apr 15, 2026
3f39b6d
Stats down feature toggle
oharsta Apr 15, 2026
e3e7276
Merge pull request #651 from OpenConext/feature/dashboard-stats-disabled
oharsta Apr 15, 2026
275475c
Merge pull request #643 from OpenConext/feature/open-access
baszoetekouw Apr 15, 2026
03c5b75
Added surf_schac_home_organization for access stats
oharsta Apr 17, 2026
e770440
Merge pull request #652 from OpenConext/feature/access
oharsta Apr 17, 2026
b17b13d
Always clear AzureMFA federation-metadata so that an updated institut…
pmeulen Apr 17, 2026
e19ef88
Merge pull request #653 from OpenConext/feature/flush-federation-meta…
pmeulen Apr 17, 2026
7f408c9
Access cron jobs
oharsta Apr 22, 2026
e6a2fb1
Merge pull request #654 from OpenConext/feature/access-cron
oharsta Apr 22, 2026
ed9f942
Cron properties aaccess
oharsta Apr 22, 2026
f69780a
Merge branch 'main' into feature/access
oharsta Apr 22, 2026
0989d8b
Merge pull request #656 from OpenConext/feature/access
oharsta Apr 22, 2026
4ee77f1
Cron properties access
oharsta Apr 23, 2026
0422876
Merge pull request #657 from OpenConext/feature/access
oharsta Apr 23, 2026
0034180
Merge pull request #650 from OpenConext/feature/#1042-add-return-url-…
oharsta Apr 23, 2026
2ba4d1a
Added sram_rp_entity_id to manage for push functionality
oharsta Apr 23, 2026
ced2dda
Merge pull request #658 from OpenConext/feature/manage-eb-push
oharsta Apr 23, 2026
7cc0a50
Merge pull request #558 from OpenConext/feature/improve_ebauth_parse_…
pmeulen Apr 29, 2026
e709961
Remove obsolete certificate task and stop patching during a deploy (#…
crosmuller May 4, 2026
f68cf27
Default create_from_institution_return_url_allowed_domains voor eduID
phavekes May 5, 2026
523926f
Bugfix for double quote
oharsta May 6, 2026
153f72d
Merge pull request #663 from OpenConext/bug/manage-typo
oharsta May 6, 2026
112b538
Add engineblock parameters for SBS integration
baszoetekouw Apr 8, 2025
165e826
Fix duplicate keys
baszoetekouw Apr 8, 2026
2f16f08
Fix jinja template
baszoetekouw Apr 8, 2026
abfe916
WIP
mrvanes Mar 19, 2026
150b22e
WIP
mrvanes Mar 25, 2026
28686c4
WIP
mrvanes Mar 26, 2026
114a7a9
Add ldap role
mrvanes Mar 26, 2026
96bad9f
Add plsc and mailpit roles
mrvanes Mar 27, 2026
3eee2dc
Add sram-metadata and rename apps+roles
mrvanes Mar 27, 2026
b3f85f1
Fix haproxy_backend.cfg.j2
mrvanes Mar 27, 2026
bf52be3
WIP
mrvanes Apr 9, 2026
1e8614e
WIP
mrvanes Apr 9, 2026
2d131ea
Remove SBS cert dir
mrvanes Apr 16, 2026
26d52db
Add Engine-SBS integration
mrvanes Apr 21, 2026
82f50f7
Remove rsyslog dust
mrvanes Apr 30, 2026
9a3c379
WIP
mrvanes May 4, 2026
77ea117
Fix ldap test
mrvanes May 5, 2026
4793fe7
Parametrize satosa image
mrvanes May 5, 2026
027c161
Add CRM to AA scopes
mrvanes May 6, 2026
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
2 changes: 2 additions & 0 deletions environments/template/group_vars/all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ admin_email: "openconext-admin@example.edu"
environment_shortname: ""
environment_ribbon_colour: ""

current_release_appdir: /opt/openconext

httpd_csp:
lenient: "default-src 'self'; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; form-action 'self'; frame-ancestors 'none'; base-uri 'none'"
lenient_with_static_img: "default-src 'self'; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' https://{{ static_vhost }} http://localhost:* data:; form-action 'self'; frame-ancestors 'none'; base-uri 'none'"
Expand Down
19 changes: 10 additions & 9 deletions environments/template/group_vars/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,15 +156,15 @@ voot:
- { name: "voot", level: "DEBUG" }
externalGroupProviders:
- {
type: "teams",
url: "https://teams.{{ base_domain }}/api/voot",
credentials: {
username: "{{ teams.voot_api_user }}",
secret: "{{ external_group_provider_secrets.teams }}"
},
schacHomeOrganization: "{{ base_domain}}",
name: "SURFteams",
timeoutMillis: 15000
type: "invite",
url: "https://invite.{{ base_domain }}/api/external/v1/voot",
credentials: {
username: "{{ invite.vootuser }}",
secret: "{{ invite.vootsecret }}"
},
schacHomeOrganization: "N/A",
name: "Invite",
timeoutMillis: 3000
}

oidc_playground:
Expand Down Expand Up @@ -338,6 +338,7 @@ manage:
features: push, validation, push_preview, orphans, find_my_data, edugain, auto_refresh
environment: template
super_user_team_names: "urn:collab:group:test.surfteams.nl:nl:surfnet:diensten:surfconext_tpm_core"
sram_rp_entity_id: "sbs.test.sram.surf.nl"
apiUsers:
- {
name: "dashboard",
Expand Down
1 change: 1 addition & 0 deletions roles/dashboard/templates/serverapplication.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ dashboard.feature.consent={{ dashboard.feature_consent }}
# Valid choices are 'MOCK', 'PDP' or 'MANAGE', 'MOCK' is for local development
dashboard.feature.pdpSource={{ dashboard.pdp_source }}
dashboard.feature.statistics=true
dashboard.feature.statisticsDown={{ dashboard.feature_statsdown }}
dashboard.feature.mail={{ dashboard.feature_mail }}
dashboard.feature.oidc={{ dashboard.feature_oidc }}
dashboard.feature.stepup={{ dashboard.feature_stepup }}
Expand Down
1 change: 1 addition & 0 deletions roles/docker/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807c
docker_apt_filename: "docker"
docker_install_traefik: true
docker_traefik_ldaps: false
docker_traefik_version: 3.6.10
docker_traefik_ports:
- 0.0.0.0:443:443
2 changes: 1 addition & 1 deletion roles/docker/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
- name: Create the Traefik loadbalancer
community.docker.docker_container:
name: loadbalancer
image: traefik:latest
image: traefik:{{ docker_traefik_version }}
published_ports: "{{ docker_traefik_ports }}"
pull: true
restart_policy: "always"
Expand Down
8 changes: 8 additions & 0 deletions roles/engine/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ engine_api_feature_consent_remove: 0
engine_api_feature_metadata_api: 1
engine_api_feature_deprovision: 1
engine_feature_send_user_attributes: 0
engine_feature_enable_sbs_interrupt: 0

# Cutoff point for showing unfiltered IdPs on the WAYF
engine_wayf_cutoff_point_for_showing_unfiltered_idps: 50
Expand Down Expand Up @@ -76,6 +77,13 @@ engine_stepup_gateway_sfo_entity_id: "https://{{ engine_stepup_gateway_domain }}
# The single sign-on endpoint used for Stepup Gateway SFO callouts
engine_stepup_gateway_sfo_sso_location: "https://{{ engine_stepup_gateway_domain }}/second-factor-only/single-sign-on"

# SBS interrupt settings
engine_sbs_attributes_allowed:
- 'urn:mace:dir:attribute-def:eduPersonEntitlement'
- 'urn:mace:dir:attribute-def:uid'
- 'urn:mace:dir:attribute-def:eduPersonPrincipalName'
- 'urn:oid:1.3.6.1.4.1.24552.500.1.1.1.13'

## The minimum priority of messages that will be logged
engine_logging_passthru_level: NOTICE

Expand Down
2 changes: 1 addition & 1 deletion roles/engine/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@
PHP_MEMORY_LIMIT: "{{ engine_php_memory }}"
APP_ENV: "prod"
APP_SECRET: "{{ engine_parameters_secret }}"
APP_DEBUG: "{{ engine_debug | bool | int }}"
APP_DEBUG: "{{ engine_debug | bool | int | string }}"
Comment thread
mrvanes marked this conversation as resolved.
etc_hosts:
host.docker.internal: host-gateway
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wat doet dit?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It fixes ansible error

mounts:
Expand Down
13 changes: 13 additions & 0 deletions roles/engine/templates/parameters.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ parameters:
feature_stepup_sfo_override_engine_entityid: {{ engine_feature_stepup_override_entityid | bool | to_json }}
feature_enable_idp_initiated_flow: {{ engine_feature_idp_initiated_flow | bool | to_json }}
feature_stepup_send_user_attributes: {{ engine_feature_send_user_attributes | bool | to_json }}
feature_enable_sram_interrupt: {{ engine_feature_enable_sbs_interrupt | bool | to_json }}
##########################################################################################
## PROFILE SETTINGS
##########################################################################################
Expand Down Expand Up @@ -310,3 +311,15 @@ parameters:
# used in the authentication log record. The attributeName will be searched in the response attributes and if present
# the log data will be enriched. The values of the response attributes are the final values after ARP and Attribute Manipulation.
auth.log.attributes: {{ engine_log_attributes }}


##########################################################################################
## SBS external authorization/attribute enrichtment
##########################################################################################
sram.api_token: "{{ sbs_engine_block_api_token | default('') }}"
sram.base_url: "https://{{ sbs_base_domain | default('sbs.example.org') }}/api/users/"
sram.authz_location: "authz_eb"
sram.attributes_location: "attributes_eb"
sram.interrupt_location: "interrupt"
sram.verify_peer: true
sram.allowed_attributes: {{ engine_sbs_attributes_allowed }}
13 changes: 1 addition & 12 deletions roles/haproxy/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
- name: Install haproxy and socat
ansible.builtin.apt:
name:
- "haproxy=3.0.*"
- "haproxy"
- "socat"
- "git"
state: "present"
Expand Down Expand Up @@ -88,17 +88,6 @@
group: haproxy
mode: "0770"

- name: Create combined key and certificate file for HAproxy
ansible.builtin.copy:
content: >
{{ item.key_content }}{{ lookup('file', '{{ inventory_dir }}/files/certs/{{ item.crt_name }}') }}
dest: "/etc/haproxy/certs/{{ item.name }}_haproxy.pem"
mode: "0600"
with_items: "{{ haproxy_sni_ip.certs }}"
when: haproxy_sni_ip.certs is defined
notify:
- "reload haproxy"

- name: Create backend CA directory
ansible.builtin.file:
path: "{{ tls_backend_ca | dirname }}"
Expand Down
5 changes: 0 additions & 5 deletions roles/haproxy/templates/certlist.lst.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
/etc/haproxy/certs/{{ host }}.pem [ocsp-update on]
{% endfor %}
{% endif %}
{% if haproxy_sni_ip.certs is defined %}
{% for cert in haproxy_sni_ip.certs %}
/etc/haproxy/certs/{{ cert.name }}_haproxy.pem [ocsp-update on]
{% endfor %}
{% endif %}
{% if haproxy_extra_certs is defined %}
{% for cert in haproxy_extra_certs %}
{{ cert }} [ocsp-update on]
Expand Down
15 changes: 15 additions & 0 deletions roles/haproxy/templates/haproxy_backend.cfg.j2
Comment thread
mrvanes marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,18 @@
{% endfor %}
{% endif %}
{% endfor %}

{% if haproxy_ldap_servers is defined %}
#---------------------------------------------------------------------
# ldap backend
#---------------------------------------------------------------------
backend ldap_servers
mode tcp
option tcpka

option ldap-check

{% for server in haproxy_ldap_servers -%}
server {{server.label}} {{server.ip}}:{{server.port}} ssl verify none check weight 10 {% if loop.index==1 %}on-marked-up shutdown-backup-sessions{% else %}backup{% endif %}
{% endfor %}
{% endif %}
46 changes: 31 additions & 15 deletions roles/haproxy/templates/haproxy_frontend.cfg.j2
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ frontend stats
# -------------------------------------------------------------------
frontend internet_ip

bind {{ haproxy_sni_ip.ipv4 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip.ipv6 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip.ipv4 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip.ipv6 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip.ipv4 }}:80 transparent
bind {{ haproxy_sni_ip.ipv6 }}:80 transparent
# Logging is done in the local_ip backend, otherwise all requests are logged twice
Expand All @@ -30,7 +30,7 @@ frontend internet_ip
http-request redirect scheme https code 301 if !{ ssl_fc }
# Log the user agent in the httplogs
capture request header User-agent len 256
# Put the useragent header in a variable, shared between request and response.
# Put the useragent header in a variable, shared between request and response.
http-request set-var(txn.useragent) req.fhdr(User-Agent)
# The ACL below makes sure only supported http methods are allowed
acl valid_method method {{ haproxy_supported_http_methods }}
Expand All @@ -51,7 +51,7 @@ frontend internet_ip
http-response replace-header Set-Cookie (?i)(^(?!.*samesite).*$) \1;\ SameSite=None if !no_same_site_uas
# Remove an already present SameSite cookie attribute for unsupported browsers
http-response replace-value Set-Cookie (^.*)(?i);\ *SameSite=(Lax|Strict|None)(.*$) \1\3 if no_same_site_uas
# Log whether the no_same_site_uas ACL has been hit
# Log whether the no_same_site_uas ACL has been hit
http-request set-header samesitesupport samesite_notsupported if no_same_site_uas
http-request set-header samesitesupport samesite_supported if !no_same_site_uas
# We need a dummy backend in order to be able to rewrite the loadbalancer cookies
Expand All @@ -66,7 +66,7 @@ frontend local_ip
acl valid_vhost hdr(host) -f /etc/haproxy/acls/validvhostsunrestricted.acl
acl staging req.cook(staging) -m str true
acl staging src -f /etc/haproxy/acls/stagingips.acl
acl stagingvhost hdr(host) -i -M -f /etc/haproxy/maps/backendsstaging.map
acl stagingvhost hdr(host) -i -M -f /etc/haproxy/maps/backendsstaging.map
use_backend %[req.hdr(host),lower,map(/etc/haproxy/maps/backendsstaging.map)] if stagingvhost staging
use_backend %[req.hdr(host),lower,map(/etc/haproxy/maps/backends.map)]
option httplog
Expand All @@ -82,7 +82,7 @@ frontend local_ip
http-request capture sc_http_req_rate(0) len 4
# Create an ACL when the request rate exceeds {{ haproxy_max_request_rate }} per 10s
acl exceeds_max_request_rate_per_ip sc_http_req_rate(0) gt {{ haproxy_max_request_rate }}
# Measure and log the request rate per path and ip
# Measure and log the request rate per path and ip
http-request track-sc1 base32+src table st_httpreqs_per_ip_and_path
http-request capture sc_http_req_rate(1) len 4
# Some paths allow for a higher ratelimit. These are in a seperate mapfile
Expand All @@ -96,7 +96,7 @@ frontend local_ip
http-request deny if ! valid_vhost
# Deny the request when the request rate exceeds {{ haproxy_max_request_rate }} per 10s
http-request deny deny_status 429 if exceeds_max_request_rate_per_ip !allowlist
# Deny the request when the request rate per host header url path and src ip exceeds {{ haproxy_max_request_rate_ip_path }} per 1 m
# Deny the request when the request rate per host header url path and src ip exceeds {{ haproxy_max_request_rate_ip_path }} per 1 m
http-request deny deny_status 429 if exceeds_max_request_rate_per_ip_and_path !allowlist
# Create some http redirects
{% if haproxy_securitytxt_target_url is defined %}
Expand All @@ -111,8 +111,8 @@ frontend local_ip
## -------------------------------------------------------------------
frontend internet_restricted_ip

bind {{ haproxy_sni_ip_restricted.ipv4 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip_restricted.ipv6 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip_restricted.ipv4 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip_restricted.ipv6 }}:443 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1 transparent
bind {{ haproxy_sni_ip_restricted.ipv4 }}:80 transparent
bind {{ haproxy_sni_ip_restricted.ipv6 }}:80 transparent
# Logging is done in the local_ip_restriced backend, otherwise all requests are logged twice
Expand All @@ -128,8 +128,8 @@ frontend internet_restricted_ip
# We redirect all port 80 to port 443
http-request redirect scheme https code 301 if !{ ssl_fc }
# Log the user agent in the httplogs
capture request header User-agent len 256
# Put the useragent header in a variable, shared between request and response.
capture request header User-agent len 256
# Put the useragent header in a variable, shared between request and response.
http-request set-var(txn.useragent) req.fhdr(User-Agent)
# The ACL below makes sure only supported http methods are allowed
acl valid_method method {{ haproxy_supported_http_methods }}
Expand All @@ -155,12 +155,12 @@ frontend internet_restricted_ip
# frontend restricted ip addresses localhost
# traffic coming back from the dummy backend ends up here
# -------------------------------------------------------------------
frontend localhost_restricted
frontend localhost_restricted
bind 127.0.0.1:82 accept-proxy
acl valid_vhost hdr(host) -f /etc/haproxy/acls/validvhostsrestricted.acl
acl staging req.cook(staging) -m str true
acl staging src -f /etc/haproxy/acls/stagingips.acl
acl stagingvhost hdr(host) -i -M -f /etc/haproxy/maps/backendsstaging.map
acl stagingvhost hdr(host) -i -M -f /etc/haproxy/maps/backendsstaging.map
use_backend %[req.hdr(host),lower,map(/etc/haproxy/maps/backendsstaging.map)] if stagingvhost staging
use_backend %[req.hdr(host),lower,map(/etc/haproxy/maps/backends.map)]
option httplog
Expand All @@ -177,7 +177,7 @@ frontend localhost_restricted
# Create an ACL when the request rate exceeds {{ haproxy_max_request_rate }} per 10s
acl exceeds_max_request_rate_per_ip sc_http_req_rate(0) gt {{ haproxy_max_request_rate }}
http-request deny deny_status 429 if exceeds_max_request_rate_per_ip !allowlist
# Measure and log the request rate per path and ip
# Measure and log the request rate per path and ip
http-request track-sc1 base32+src table st_httpreqs_per_ip_and_path
http-request capture sc_http_req_rate(1) len 4
# Some paths allow for a higher ratelimit. These are in a seperate mapfile
Expand All @@ -191,7 +191,7 @@ frontend localhost_restricted
http-request deny if ! valid_vhost
# Deny the request when the request rate exceeds {{ haproxy_max_request_rate }} per 10s
http-request deny deny_status 429 if exceeds_max_request_rate_per_ip !allowlist
# Deny the request when the request rate per host header url path and src ip exceeds {{ haproxy_max_request_rate_ip_path }} per 1 m
# Deny the request when the request rate per host header url path and src ip exceeds {{ haproxy_max_request_rate_ip_path }} per 1 m
http-request deny deny_status 429 if exceeds_max_request_rate_per_ip_and_path !allowlist
# Create some http redirects
{% if haproxy_securitytxt_target_url is defined %}
Expand All @@ -201,3 +201,19 @@ frontend localhost_restricted
http-request redirect location %[base,map_reg(/etc/haproxy/maps/redirects.map)] if { base,map_reg(/etc/haproxy/maps/redirects.map) -m found }

{% endif %}

{% if haproxy_ldap_servers is defined %}
#--------------------------------------------------------------------
# frontend public ips ldap
# -------------------------------------------------------------------
listen ldap
mode tcp
no option dontlognull
option tcplog
option logasap
timeout client 900s
timeout server 901s
bind {{ haproxy_sni_ip.ipv4 }}:636 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 transparent
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hoe komt de ldap hostname aan een certificaat? Moet dan get_acme_certs.yml ook niet worden aangepast zocdat haproxy_ldap_servers aan de lijst met hostnames wordt toegevoegd?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dat is geregeld in de loadbalancer hostname configuratie voor zover ik me herinner. Het gaat in elk geval goed op dit moment?

bind {{ haproxy_sni_ip.ipv6 }}:636 ssl crt-list /etc/haproxy/maps/certlist.lst ssl crt /etc/haproxy/certs/ no-sslv3 no-tlsv10 no-tlsv11 transparent
use_backend ldap_servers
{% endif %}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hier is ook een firewall change nodig denk ik?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Geen idee, het werkt nu in iedergeval zonder?

11 changes: 0 additions & 11 deletions roles/haproxy/templates/update_ocsp.j2

This file was deleted.

10 changes: 7 additions & 3 deletions roles/invite/templates/serverapplication.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ logging:
org.springframework.security: WARN
com.zaxxer.hikari: ERROR
invite: DEBUG
net.javacrumbs.shedlock: DEBUG

server:
port: 8080
Expand Down Expand Up @@ -74,11 +75,13 @@ crypto:
private-key-location: file:///private_key_pkcs8.pem

cron:
user-cleaner-expression: "0 0/30 * * * *"
user-cleaner-cron: "PT30M"
user-cleaner-cron-initial-delay: "PT10M"
user-cleaner-lock-at-least-for: "PT5M"
user-cleaner-lock-at-most-for: "PT28M"
last-activity-duration-days: 1000
role-expiration-notifier-expression: "0 0/30 * * * *"
role-expiration-notifier-cron: "PT30M"
role-expiration-notifier-cron-initial-delay: "PT15M"
# Set to -1 to suppress role expiry notifications
role-expiration-notifier-duration-days: 5
role-expiration-notifier-lock-at-least-for: "PT5M"
Expand All @@ -87,7 +90,7 @@ cron:
metadata-resolver-fixed-rate-milliseconds: 86_400_000
metadata-resolver-url: "https://metadata.{{ base_domain }}/idps-metadata.xml"
# A value of 0 means no logs will be deleted
purge-audit-log-days: 365
purge-audit-log-days: 0
# A value of 0 means no invitations will be deleted
purge-expired-invitations-days: 365
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dit lijkt me niet de bedoeling?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik weet niet waar deze change vandaan komt, ik denk dat het een rebase is?


Expand Down Expand Up @@ -158,6 +161,7 @@ external-api-configuration:
password: "{{ invite_attribute_aggregation_secret }}"
scopes:
- attribute_aggregation
- crm
- username: {{ invite.lifecycle_user }}
password: "{{ invite.lifecycle_secret }}"
scopes:
Expand Down
5 changes: 5 additions & 0 deletions roles/mailpit/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
mailpit_image: "axllent/mailpit"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik denk niet dat we een random image van een vaag persoon op internet direct willen utirollen, zeker niet als dat straks ook in publieke test terecht komt.

Waarschijnlijk beter om zelf een baseimage te bouwen hiervoor.

mailpit_hostname: "mailpit.{{ base_domain }}"
mailpit_user: "mailpit"
mailpit_group: "mailpit"
Loading