RRZE Access Control
WordPress Plugin for protection of files/documents through user and network related functions
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/rrze-webteam/rrze-ac/archive/refs/heads/main.zipDas Plugin ermöglicht den eingeschränkten Zugriff auf Dateien und Seiten durch benutzerbezogene Funktionen und IP-Adressen.
Contributors
- RRZE-Webteam, http://www.rrze.fau.de
Copyright
GNU General Public License (GPL) Version 3
Documentation
See documenation at https://www.wp.rrze.fau.de
Feedback
- https://github.com/RRZE-Webteam/rrze-ac/issues
- webmaster@rrze.fau.de
Entwicklerhinweise
Zugriffsberechtigungen werden als Website-Option gespeichert und können ausschließlich von Administratoren angelegt oder bearbeitet werden. Die unter „Allgemein“ festgelegte Mindestrolle darf bestehende Berechtigungen in Seiten und Medien auswählen und ändern, jedoch keine Berechtigungsdefinitionen verwalten.
SSO-Optionen erscheinen nur, wenn rrze-sso/rrze-sso.php installiert und für die Website oder das Netzwerk aktiviert ist. Das Plugin prüft geschützte Inhalte auch in der WordPress-REST-API, jedoch ausschließlich für die Core-Ressourcen /wp/v2/pages/{id} und /wp/v2/media/{id}; REST-Endpunkte anderer Plugins werden nicht beeinflusst.
Zentrale technische Konstanten wie Optionsnamen, Transient-Präfixe, Pfade und Cookie-Einstellungen liegen in includes/Config.php. Versions- und Plugin-Metadaten werden aus package.json in den Plugin-Header und die readme.txt synchronisiert. Änderungen an Quell-Assets werden über die npm-Skripte gebaut; erzeugte Dateien im Verzeichnis build/ werden nicht manuell bearbeitet.
Informative Protokollmeldungen werden nur bei aktivierter Debugging-Option an rrze.log.info gesendet. Fehlgeschlagene Passworteingaben werden unabhängig davon an rrze.log.warning protokolliert.
Besucher-IP und Reverse Proxys
Standardmäßig verwendet AC ausschließlich REMOTE_ADDR. Besucher-IP-Freigaben
begründen kein Vertrauen in Proxy-Header. Wenn PHP hinter einem Reverse Proxy
dessen Adresse als REMOTE_ADDR erhält, müssen die tatsächlichen Infrastruktur-
Proxys ausdrücklich über rrze_trusted_proxies konfiguriert werden. Dieser Filter
wird gemeinsam mit RRZE Settings und Private Site verwendet, beispielsweise in
einem administrierten MU-Plugin:
add_filter('rrze_trusted_proxies', static function ($proxies) {
// Dokumentationsadressen durch die tatsächlichen Proxy-Adressen ersetzen.
return ['192.0.2.10', '2001:db8:1234::/64'];
});
Nur vertrauenswürdige direkte Absender dürfen X-Forwarded-For liefern. Die Kette
wird von rechts bis zur ersten nicht vertrauenswürdigen Adresse geprüft. Proxys
müssen ihren direkten Absender anhängen oder eingehende Header durch verifizierte
Werte ersetzen. Ohne gültige Besucheradresse hinter einem konfigurierten Proxy
wird keine IP-Ausnahme gewährt; die Proxy-IP dient nicht als Ersatz.
Einzeladressen und CIDR-Netze werden für IPv4 und IPv6 unterstützt. Setzt bereits
der Webserver REMOTE_ADDR auf die verifizierte Besucheradresse, bleibt die
Proxy-Liste leer. Vor dem Einsatz hinter Reverse Proxys ist diese Konfiguration
zu prüfen. Besucherbereiche werden nicht automatisch als Proxys übernommen.
Die Regressionstests prüfen REST-Routen, Collection-Freigaben und IP-/Proxy-Auswertung ohne Datenbank- oder HTTP-Zugriffe.
Cookies
Für eine veröffentlichte Seite mit passwortbasierter Zugangsberechtigung setzt das Plugin nach erfolgreicher Passworteingabe den Cookie rrze_ac_password_{Beitrags-ID}. Er enthält den verschlüsselten Passwortwert und ermöglicht den erneuten Zugriff auf genau diese Seite, ohne das Passwort erneut einzugeben. Der Cookie gilt eine Stunde, wird nur über HTTPS übertragen, ist nur serverseitig lesbar (HttpOnly), verwendet SameSite=Lax sowie den von WordPress vorgegebenen Cookie-Pfad und die Cookie-Domain. Bei allen anderen Zugriffsarten setzt das Plugin keine Cookies.