Allgemeine Skripte

Inhalt

Allgemeine Skripte#

sysman sysadmin

Allgemeine Skripte sind meist an einen bestimmten Klassennamen gebunden. Erkennt das System das Vorhandensein einer solchen Klasse, wird diese je nach Zweck aufgerufen.

Beispiele#

Das folgende Skript erweitert die Benutzerauthentifizierung, um weitergeleitete Benutzeranmeldeinformationen von einem Identitätsanbieter wie Shiboleth zu akzeptieren. Das Skript muss als „UserAuthentication“ bezeichnet werden und die Container-basierte Authentifizierung (CBA) muss in der Serverkonfiguration, LDAP / SSO-Registerkarte aktiviert sein.

import java.util.Enumeration;
import java.util.List;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

System.out.println("Starting to examine request header...");

HttpServletRequest request = binding.getProperty("request");
Enumeration<String> headerNames = request.getHeaderNames();
        String userName = null;
        String referer = null;
        while (headerNames.hasMoreElements()) {
            String key = (String) headerNames.nextElement();
            String value = request.getHeader(key);
            System.out.println(key + ": " + value);
            if (key.equals("authorization")) {
                String decodedString = null;
                value = value.replaceAll("Basic ", "");
                decodedString = new String(Base64.decodeBase64(value), StandardCharsets.UTF_8);
                if (decodedString != null && decodedString.split(":").length > 0) {
                    String[] userPassArr = decodedString.split(":");
                    userName = userPassArr[0];
                }
            }
            if (key.equals("referer")) {
                referer = value;
            }
            if (key.equals("X-Forwarded-User")) {
                return value;
            }
        }

System.out.println("Finished examining request header...");
return "";