Anmelden
Ich möchte für die nächsten 30 Tagen angemeldet bleiben
Deutsch
Several pages in the usergroup are available in English. Click on english to visit these pages.

Blogs

26.02.2013
Single Sign-on (SSO) und Modul-Sharing in DotNetNuke CE ab 06.01.00 (Torsten Weggen)

SSOEin Problem dem man sich als DNN-Profi immer mal wieder stellen muss ist der Wunsch der Kunden nach einer Single Sign-On Lösung in mehreren Portalen. So gibt es häufig die Konstellation das z.B. ein Dachverband oder der Hauptsitz einer Firma ein Hauptportal betreiben und die zugeordneten Vereine, Firmen oder Abteilungen eigene Childportale. Das sich der User dabei nur einmal anmelden muss und dann in sämtlichen Portalen angemeldet ist (selbstverständlich mit unterschiedlichen Rechten je Portal) war in der Vergangenheit nur mit einigem Aufwand oder zuzukaufenden Modulen zu realisieren.

 

Ein weitere Baustelle war die Möglichkeit, ein Modul über Portalgrenzen hinweg zu teilen, so das der Inhalt nicht mehrfach erfasst werden muss sondern einfach in mehreren Portalen angezeigt werden kann (z.B. Desktop-Portal und Mobile-Portal).

 

Seit der Version 6.1  von DotNetNuke ist dies mit der Professional Version durch die Portalgruppen möglich geworden. Leider ist dieses Feature in der Community Edition vermeintlich nicht enthalten. Da die Funktionalität aber im Core steckt und nur das Administrationsmodul der PE fehlt, ist dies mit minimalen Eingriffen direkt in der Datenbank auch für die CE zu realisieren !

 

Basis der ganzen Funktionalität ist die neu hinzugekommene Tabelle “PortalGroups”:

 

PortalGroups

 

Für jede Gruppierung von Portalen müssen wir hier einen Datensatz anlegen:

 

PortalGroupSample


Neben dem PortalGroupName und der PortalGroupDescription, die nur beschreibenden Charakter haben sowie den üblichen CreatedOnDate, CreatedByUserID usw. –Feldern ist hier eigentlich nur MasterPortalID und AuthenticationDomain wichtig. MasterPortalID sollte die ID des Portals bekommen, an dem sich der User in Zukunft immer anmelden wird und die AuthenticationDomain entspricht dann dem entsprechende Domain-Namen.

 

Nun muss nur noch die PortalGroupID der neu angelegten Portalgruppe in das gleichnamige Feld der entsprechenden Portals-Tabellensätze eingetragen werden und schon ist unsere SSO Lösung fertig :

 

Portals

 

Hinweis: Damit die Änderungen auch im Web angezeigt werden, muss die Applikation einmal neu geladen werden (Applicationpool recyclen).

 

Ein existierendes Modul hinzufügen – vorher:

 

Link_module_before

 

Ein existierendes Modul hinzufügen – hinterher:

 

Link_module_after

 

Und nach dem Login auf dem Hauptportal ist der Benutzer auch automatisch im Subportal angemeldet und alle User des Hauptportals erscheinen auch in der Benutzerverwaltung des Unterportals (und umgekehrt)!

 

Vielen Dank an Stefan Cullmann, der mir diesen hilfreichen  “Trick” verraten hat !

Kommentare: 2

Henner.Ungethüm meint

Danke für diesen tollen Tipp, Torsten. Ich werde das auch mal ausprobieren. VG Henner
# 03.03.2013 11:07

Michael Tobisch meint

So wie mir das aussieht ist das aber nur dann möglich, wenn alle Portale in der selben Installation laufen - oder habe ich was versäumt? Gibt es eigentlich eine Lösung, dass ich so etwas auch über mehrere Installationen auf einem oder mehreren Servern realisieren kann? Ansonsten großes Danke an Thorsten für diesen Beitrag - ist ganz wertvoll! Gruß aus Innsbruck - Michael
# 14.03.2013 15:05