2021.06

Zugriffsschlüssel

Zugriffsschlüssel sind die Grundlage für einen alternativen Autorierungsmechanismus, der mittels einer annehmbaren Strategie das Schreiben oder Lesen von Objekten oder Derivaten ermöglicht.

Einführung

Mit einer zugehörigen Strategie können Zugriffsschlüssel die Grundlage für einen unabhängigen oder nebenläufigen Autorierungsansatz schaffen. Eine wesentliche Motivation ist die Autorisierung unabhängig vom Nutzersystem (Nutzer) für Dritte (Gäste), exemplarisch beleuchtet etwa für Peer-Reviews. Dabei zielt der Ansatz auf das Lesen, aber auch Schreiben von Objekten oder Derivaten.
Denn fundamental wird zwischen Lese- und Schreibzugriffsschlüssel unterschieden, die persistent oder temporär aktiviert werden kann. Ein Nutzer kann für ein Objekt oder Derivat genau einen Zugriffsschlüssel persistent aktivieren. Zusätzlich können Gäste oder Nutzer gegebenenfalls Zugriffsschlüssel temporär für ein Objekt oder Derivat aktivieren. Hierbei unterliegt der Zugriffsschlüssel der Browser-Session. Zugriffsschlüssel können grundsätzlich deaktiviert werden. Die Gültigkeit kann optional zeitlich über ein Ablaufdatum beschränkt werden. Die REST-API V2 bietet eine Möglichkeit für die Verwaltung von Zugriffsschlüsseln. Dafür die Verwaltung muss ein Nutzer oder Gast mindestens über Schreibrechte verfügen. Gegebenenfalls muss die REST-API zusätzlich aktiviert werden, wenn beispielsweise die Verwaltung von Zugriffschlüsseln für Gäste zugelassen werden soll. Darüber hinaus steht ein Ansatz für eine Webapplikation zur Verwaltung von Zugriffsschlüsseln bereit.

Anatomie

Anatomisch betrachtet setzt sich ein Zugriffsschlüssel substanziell aus einem Secret und Type zusammen. Secret definiert das Geheimnis, das ein Nutzer kennen muss, um den Zugriffsschlüssel zu aktivieren. Der Wert kann frei gewählt werden, jedoch kann der Wert nach dem Hinzufügen des Zugriffsschlüssels nicht mehr eingesehen oder geändert werden. Type spiegelt die Berechtigung wieder, die sich aus der Aktivierung des Zugriffsschlüssels für ein Objekt oder Derivat ergibt. Der Ansatz unterstützt Lese- und Schreibzugriffsschlüssel: Der Type eines Lesezugriffschlüssels wird mit dem Wert read beschrieben, ein Schreibzugriffsschlüssel mit dem Wert writedb.

Optional kann der Status eines Zugriffsschlüssels mit IsActive beschrieben werden. Hiermit kann der Zugriffsschlüssel de- und aktiviert werden IsActive wird mit true (aktiviert) oder false (deaktiviert) beschrieben. Mit Expiration kann ein Ablaufdatum für den Zugriffsschlüssel gesetzt werden. Damit lässt sich die Gültigkeit zeitlich einschränken. Als Wert wird prinzipiell ein Unix Timestamp erwartet. Comment dient für zusätzliche Informationen, die eventuell wichtig für die Verwaltung sind.
Die folgende Ansicht zeigt einen Zugriffsschlüssel im JSON-Format mit allen manipulierbaren Eigenschaften:

1
2
3
4
5
6
7
{
  "secret": "mycore+accesskey==love",
  "type": "read",
  "isActive": true,                       //optional
  "expiration": "1631256328",             //optional
  "comment": "Test",                      //optional
}

Gebrauch

Zugriffsschlüssel können persistent oder temporär aktiviert werden. Für das Aktivieren persistenter Zugriffsschlüssel steht aktuell kein Front-End zur Verfügung.

Filter

Für die temporäre Aktivierung steht der AccessKeyFilter bereit, der default für das Object-Servlet aktiviert wird. In Kombination mit der bereitgestellten Strategie wird und kann der Filter abgeleitet aus MCR.AccessKey.Session.AllowedPermissionTypes de- oder aktiviert werden. Sofern der Filter aktiviert ist, wird der Query-String auf das Secret über den Parameter accesskey geprüft - beispielhaft: receive/<object>?accesskey=<secret>. Nur nur wenn der Zugriffsschlüssel zum angefragten Objekt passt, wird dieser aktiviert - ansonsten ignoriert. Der Filter erwarted das Secret codiert in Base64URL.

Kommandos

Über die MyCoRe Kommandozeile können auch administrative Operationen für Zugriffsschlüssel ausgeführt werden.

clear access key
Das Kommando löscht alle Zugriffsschlüssel.
clear all access keys of id {0}
Das Kommando löscht alle Zugriffsschlüssel eines Objekts.