Verwenden der rollenbasierten Zugriffssteuerung

In diesem Thema erfahren Sie, wie Sie die rollenbasierte Zugriffskontrolle verwenden können, um die Sitzungen, die in einer Veranstaltungsagenda angezeigt werden, auf der Grundlage der Rolle des Benutzers einzuschränken.

Die rollenbasierte Zugriffskontrolle kann verwendet werden, um die Sitzungen, die in der Sitzungsagenda erscheinen, anhand der Rolle eines Benutzers zu filtern. Die rollenbasierte Zugriffssteuerung basiert auf einem angegebenen SAML-Attribut für das Benutzerobjekt, das vom Benutzerverwaltungssystem (z. B. Registrierungssystem, SSO) zurückgegeben wird. Regeln werden auf der Grundlage von Benutzerrollen und Sitzungskennzeichen definiert. Brightcove empfiehlt, dass alle Sitzungen mindestens ein Tag haben, damit die rollenbasierte Filterung erfolgen kann.

Bevor du anfängst

Bevor Sie die rollenbasierte Zugriffskontrolle für ein virtuelles Veranstaltungserlebnis konfigurieren, sollten Sie diese ersten Einrichtungsschritte durchführen:

  1. Sie sollten ein virtuelles Veranstaltungserlebnis schaffen und eine Veranstaltungsagenda erstellt haben.
  2. Das virtuelle Veranstaltungserlebnis sollte mit einem Zugangskontrollprofil gesichert werden.

Rollen und Tags

Um die rollenbasierte Zugriffskontrolle zu konfigurieren, legen Sie zunächst fest, wie die Sitzungen eingeschränkt werden sollen, und erstellen dann die entsprechenden rollenbasierten Zugriffs-Tags, die jedem Benutzer und jeder Sitzung zugewiesen werden. Sie können zum Beispiel die folgenden Rollen/Tags verwenden:

  • Standard
  • unternehmen
  • vip
Den Benutzern in Ihrem SSO wird eine dieser Rollen zugewiesen, und alle Agendasitzungen werden mit einem oder mehreren dieser Werte gekennzeichnet. Die rollenbasierte Zugriffskontrolle filtert die Agenda so, dass die Benutzer nur die Sitzungen sehen, auf die sie Zugriff haben. Ein Benutzer mit der Rolle"Standard" sieht zum Beispiel nur Sitzungen, die mit"Standard" gekennzeichnet sind.

Zuweisung von Rollen an Benutzer in Auth0

Allen Benutzern in Ihrem SSO sollte eine Rolle zugewiesen werden. Folgen Sie diesen Schritten, um Benutzern mit Auth0 SSO Rollen zuzuweisen.

  1. Melden Sie sich bei Ihrem Auth0-Konto an.
  2. Klicken Sie in der linken Navigation auf Benutzerverwaltung > Benutzer.
  3. Klicken Sie auf einen Benutzer, um die Benutzerdetails anzuzeigen.
  4. Weisen Sie dem Benutzer im Abschnitt app_metadata die entsprechende Rolle zu. Die Rollen sind in dem Format "Rolle": zugewiesene Rolle einzugeben.

    Im folgenden Beispiel wird dem Benutzer die Rolle " vip" zugewiesen.

  5. Klicken Sie auf Speichern.
  6. Weisen Sie allen Benutzern Rollen zu.

Übergabe von Rollen als SAML-Daten in Auth0

Um die Rollen-Metadaten von Auth0 an ein Erlebnis zu übergeben, muss eine Regel erstellt werden. Eine Regel ist JavaScript-Code, der verwendet werden kann, um das Standardverhalten von Auth0 bei der Authentifizierung eines Benutzers zu erweitern. Gehen Sie folgendermaßen vor, um eine Regel zur Übergabe der Rollendaten zu erstellen.

  1. Melden Sie sich bei Ihrem Auth0-Konto an.
  2. Klicken Sie in der linken Navigation auf Auth Pipeline > Rules.
  3. Klicken Sie auf + Erstellen.
  4. Klicken Sie auf < > Leere Regel.
  5. Geben Sie einen Namen für die Regel ein.
  6. Fügen Sie den folgenden Code in den Skriptbereich ein.
    
    function mapSamlAttributes(user, context, callback) {
      context.samlConfiguration.mappings = {
        'role': 'role'
      };
    
      callback(null, user, context);
    }
    
  7. Klicken Sie auf Änderungen speichern.

Kontrolle des Zugangs zu Veranstaltungssitzungen

Zugriffskontroll-Tags werden verwendet, um den Zugriff auf Sitzungen zu beschränken. Wenn eine Sitzung das Zugriffskontroll-Tag " vip" hat, wird die Sitzung nur für Benutzer mit der Rolle " vip" angezeigt. Gehen Sie folgendermaßen vor, um einer Sitzung ein Zugriffskontroll-Tag zuzuweisen.

  1. Öffne das Galerie Modul.
  2. Bearbeiten Sie das Erlebnis.
  3. Klicken Sie in der linken Navigation auf Website-Funktionen >Agenda .
  4. Klicken Sie auf die Veranstaltungsagenda, um den Agenda-Editor zu öffnen.
  5. Klicken Sie auf eine Sitzung.
  6. Geben Sie in das Feld Zugriffskontrollkennzeichen die Rolle(n) ein, die Zugriff auf die Sitzung haben. Im folgenden Beispiel sehen nur Benutzer mit der Rolle "vip" diese Sitzung in der Agenda.
  7. Klicken Sie auf Speichern.

Filtern der Tagesordnung nach Rollen

Der benutzerdefinierte Code wird verwendet, um die Agenda-Sitzungen nach der Rolle des Benutzers zu filtern. In diesem Codebeispiel werden Sitzungen ohne Zugriffskontroll-Tag in allen Benutzeragenden angezeigt. Wenn der Rollenparameter des Benutzers mit dem Zugriffskontroll-Tag für die Sitzung übereinstimmt, wird diese Sitzung in der Agenda des Benutzers angezeigt.

Führen Sie die folgenden Schritte aus, um den Filterungscode zum Erlebnis hinzuzufügen.

  1. Öffne das Galerie Modul.
  2. Bearbeiten Sie das Erlebnis.
  3. Klicken Sie in der linken Navigation auf Kopf- und Fußzeile.
  4. Fügen Sie den folgenden Code in das Feld Custom Header HTML ein.
    
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
            
    <script>
    $(document).ready(() => {
        // Get role from SAML data and Agenda sessions from site
        const role = window.bcGallery.filteredAssemblerData.samlAttributes ? window.bcGallery.filteredAssemblerData.samlAttributes.role : null;
            
        if (!role) {
                console.log("Error filtering Agenda sessions. No role specified on SAML data.");
                return;
              }
            
    const sessions = bcGallery.filteredAssemblerData.site.agenda.sessions;
            
    // Looking for sessions to be filtered out
    const filteredSessions = sessions.filter((session) => {
    // If session does not have tags, do not filter the session
    if(!session["restricted_tags"].length) {
                    return false;
                }
                const restrictedTags = session["restricted_tags"];
                if(!restrictedTags.includes(role)) {
                  return true;
                }
                return false;
    });
            
    if(filteredSessions.length) {
        const contentWrapper = document.querySelector('.bcg-fixed-width-container');
            
        // Creating an observer to watch for DOM changes that might put back a filtered session
        const observer = new MutationObserver(() => {
            filteredSessions.forEach(session => {
                // Remove session item using its session id
                $(`[data-session-id='${session.id}']`).remove();
             });    
        });
            
        observer.observe(contentWrapper, {
                  attributes:    true,
                  childList:     true,
                  characterData: true 
                });
            }
    });
    </script>
    
  5. Klicken Sie auf Speichern.

Stell sicher, dass du Veröffentlichen Sie die Erfahrung erneut so erscheinen die Änderungen.