Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
de:shibidp:troubleshooting [2023/06/07 11:02] – [Problem mit Scripted Attributes] Link zum Plugin ergänzt Silke Meyerde:shibidp:troubleshooting [2024/09/17 08:00] (aktuell) – veraltete Info zu Postgres & JPA Storage entfernt Doreen Liebenau
Zeile 169: Zeile 169:
 Weder eine Konfiguration noch das Aktivieren eines Modules sind nötig. Weder eine Konfiguration noch das Aktivieren eines Modules sind nötig.
  
-===== JPAStorage mit PostgreSQL ===== 
  
-Ohne zusätzliche Konfiguration (ORM Workaround), wie beschrieben von den Schweizer Kollegen [[https://www.switch.ch/aai/guides/idp/installation/#ormxmlworkaround|https://www.switch.ch/aai/guides/idp/installation/#ormxmlworkaround]] speichert PostgreSQL die Werte als 'large Objects' in der Systemtabelle und schreibt in die Spalte 'value' nur die Link ID. +{{tag> troubleshooting debugging debug logging }}
- +
-Um die korrekte Funktion sicher zu stellen, **muss obiger Workaround dringend angewendet werden**. +
- +
-Leider sind hinterher die Daten der Datenbank nicht mehr kompatibel. D.h. vor dem Neustart des IdP müssen die Werte der Spalte ''value''  in der Tabelle ''storagerecords''  konvertiert werden. +
- +
-Eine Möglichkeit geht wie folgt direkt auf der schon vorhandenen Datenbank: +
- +
-DB als postgres Nutzer öffnen, da die Daten in der Systemtabelle ''pg_largeobject''  liegen:<code> +
-psql -Upostgres shibboleth +
-</code> +
- +
-Temporär werden die Werte decodiert mit den ID's in eine neue Tabelle geschrieben. Diese neue Tabelle gehört postgres, daher evtl. danach den Owner aktualisieren: +
- +
-<code> +
-shibboleth=> create table new_table as (select context, id, value, encode(data, 'escape') as new_value from storagerecords left join pg_largeobject on oid(value) = loid); +
-shibboleth=> alter table new_table owner to shibboleth; +
-</code> +
- +
-Jetzt anhand der values die ID's durch deren Inhalte aus der neuen Tabelle ersetzen: +
- +
-<code> +
-shibboleth=> update storagerecords set value = new_table.new_value from new_table where storagerecords.value = new_table.value; +
-</code> +
- +
-Die Temporäre Tabelle wieder löschen: +
- +
-<code> +
-shibboleth=> drop table new_table; +
-</code> +
- +
-Danach den IdP (tomcat) neu starten. Die Session und Attribute-Constent Daten sind weiterhin (wieder) verfügbar. +
- +
-{{tag>idp4 troubleshooting debugging debug logging }}+
  • Zuletzt geändert: vor 2 Jahren