Initialisierung

Beginnend mit Setupversion 4.4.0 benötigt der TwinCAT OPC UA Server die Durchführung einer Initialisierungsphase, welche sich an dem TOFU-Prinzip (Trust On First Use) orientiert. Das bedeutet, dass der Server aktiv durch den Anwender initialisiert werden muss, damit er für seine verschiedenen Funktionen (Data Access, Historical Access, usw.) verwendet werden kann.

Im Auslieferungszustand ermöglicht es der Server den Clients, eine unauthentifizierte Verbindung („Anonymous“) aufzubauen. Die einmalig durchzuführende TOFU-Initialisierung erfordert nun die Konfiguration eines Betriebssystem-Benutzers, den ein OPC UA Client anschließend verwenden muss, um sich erfolgreich am Server anzumelden.

Hierfür stellt der Server im uninitialisierten Zustand ausschließlich einen speziellen Initialisierungs-Namensraum zur Verfügung. Dieser Namensraum beinhaltet ein Objekt „Initialization“ mit einer Methode „TrustOnFirstUse“.

Initialisierung 1:

Die Methode definiert die folgenden Ein-/Ausgabeparameter:

Initialisierung 2:

Parameter

Description

[in] Username

Benutzername für den anzulegenden Betriebssystem-Benutzer. Existiert der Benutzer bereits, so versucht der Server einen Test-Login mit dem angegebenen Passwort durchzuführen und übernimmt, falls erfolgreich, den bereits vorhandenen Benutzer in seine Security-Konfiguration.

[in] Password

Passwort für den Betriebssystem-Benutzer.

Das Passwort wird nicht in der Serverkonfiguration gespeichert, sondern ist ausschließlich in der Benutzerdatenbank des Betriebssystems vorhanden. Beachten Sie, dass die Art des Passworts abhängig von etwaigen Sicherheitseinstellungen des Betriebssystems sein kann (Stichwort „komplexe Passwörter“).

[out] AddStatus

Gibt an, ob das Anlegen des Betriebssystem-Benutzers erfolgreich war oder ob der Benutzer ggf. schon existiert.

[out] LogonResult

Gibt an, ob sich der Server mit der angegebenen Benutzername/Passwort-Kombination am Betriebssystem anmelden konnte. Hiermit lässt sich gut überprüfen, ob man eventuell das falsche Passwort angegeben hat, falls der Benutzer schon existiert.

[out] OPC UA Statuscode

Der reguläre OPC UA Statuscode beim Methodenaufruf. Ist die Methode auf OPC UA Ebene erfolgreich aufgerufen worden, gibt dieser Statuscode GOOD zurück, anderenfalls BAD.

Durch den Aufruf dieser Methode wird der Server initialisiert. Die Methode versucht hierbei einen vom Anwender angegebenen Benutzer im unterlagerten Betriebssystem des Servers anzulegen. Ist dies erfolgreich, so wird der Benutzer automatisch der Security-Konfiguration (TcUaSecurityConfig.xml) des Servers hinzugefügt und als Serveradministrator definiert. Nach einem automatischen Neustart des Servers am Ende des Methodenaufrufs kann sich ein OPC UA Client dann mit diesem Benutzer am Server anmelden.

Existiert ein angegebener Benutzer schon im Betriebssystem, so wird dies über einen Ausgabeparameter (AddStatus) angezeigt. Der Server versucht in diesem Fall, sich mit dem angegebenen Passwort am Betriebssystem anzumelden. Ist dieser Anmeldevorgang erfolgreich, wird der Benutzer in der Security-Konfiguration des Servers eingetragen und die Initialisierung durch einen automatischen Neustart des Servers erfolgreich beendet. Schlägt die Anmeldung am Betriebssystem fehl (z. B., weil das falsche Passwort angegeben wurde), wird dies über einen Ausgabeparameter (LogonResult) angezeigt und die Initialisierung wird nicht fortgesetzt. So wird verhindert, dass man versehentlich versucht, den Server mit einer falschen Benutzername/Passwort-Kombination zu initialisieren und sich dadurch „auszusperren“.

Initialisierung 3:

Ablaufen eines Benutzerpassworts

Wenn der OPC UA Server einen Betriebssystembenutzer anlegt, wird für diesen Benutzer nicht explizit aktiviert, dass das Passwort nicht abläuft. Hier werden die Einstellungen des Betriebssystems übernommen, wo das maximale Kennwortalter in den Kennwortrichtlinien festgelegt ist. Wenn das maximale Kennwortalter auf 0 steht, laufen Passwörter nicht ab; ansonsten tun sie dies nach der im Betriebssystem angegebenen Anzahl von Tagen.

Das folgende Diagramm veranschaulicht diesen Prozess noch einmal in stark vereinfachter Form:

Initialisierung 4:

Nach dem Neustart des Servers muss ein OPC UA Client beim Verbindungsaufbau den zur Initialisierung verwendeten Betriebssystembenutzer zur Authentifizierung verwenden.

Die folgenden Screenshots zeigen den gesamten Vorgang exemplarisch am Beispiel des OPC UA Clients „UA Expert“. In diesem Beispiel gehen wir davon aus, dass der Benutzer noch nicht im Betriebssystem existiert und somit durch den Server angelegt wird.

Schritt 1: OPC UA Client verbindet sich erstmalig mit dem Server

Der Server wurde installiert und der UA Expert baut zum ersten Mal eine Verbindung mit dem Server auf. Für diese Verbindung kann noch der Anonymous-Zugriff verwendet werden.

Initialisierung 5:

Nach dem Herstellen der Verbindung findet man im Adressraum des Servers das Initialization-Objekt mitsamt der TrustOnFirstUse Methode.

Initialisierung 6:

Schritt 2: OPC UA Client startet TrustOnFirstUse

Der Aufruf der TrustOnFirstUse Methode kann über einen beliebigen OPC UA Client erfolgen, z. B. den UA Expert. Aber auch die Beckhoff-eigenen Konfigurationstools erlauben die Verwendung dieser Initialisierungsschnittstelle. Der TwinCAT OPC UA Configurator (Standalone oder Visual Studio integriert) erkennt beim Herstellen einer Verbindung automatisch einen uninitialisierten Server und ermöglicht die Initialisierung über eine entsprechende Konfigurationsoberfläche:

Initialisierung 7:

Die folgenden Schritte zeigen denselben Prozess, wie er z. B. in der Software UA Expert manuell durchgeführt werden kann:

Im UA Expert wird die TrustOnFirstUse Methode aufgerufen, um einen Benutzer zu erzeugen und den Server für diesen Benutzer zu konfigurieren. Als Benutzername wurde in diesem Beispiel „MyOpcUaServerUser“ verwendet. Das Passwort muss den Komplexitätsanforderungen des Betriebssystems entsprechen, anderenfalls schlägt die Initialisierung fehl. Der folgende Screenshot zeigt den erfolgreichen Aufruf der Methode.

Initialisierung 8:

Der Parameter AddStatus zeigt, dass das Anlegen des Benutzers in der Benutzerdatenbank des Betriebssystems erfolgreich war. Der Parameter LogonResult zeigt, dass eine initiale Test-Authentifizierung des Servers mit den angegebenen Benutzerinformationen erfolgreich war.

Der Server startet nach diesem erfolgreichen Methodenaufruf automatisch neu.

Schritt 3: OPC UA Client meldet sich am initialisierten Server an

Initialisierung 9:

Benutzername/Passwort deaktiviert Anonymous-Zugriff

Bitte beachten Sie, dass der UA Expert sich nach dem Methodenaufruf nicht automatisch neu mit dem Server verbinden kann, da der Anonymous-Zugriff deaktiviert wurde und von nun an die Anmeldung über den angegebenen Benutzernamen erfolgen muss.

Initialisierung 10:

Nach dem Verbindungsaufbau sind im Adressraum des Servers die regulären Namensräume und Objekte wieder zu finden und die Projektierung der Applikation kann beginnen.

Initialisierung 11:
Initialisierung 12:

Berechtigungen des TOFU-Benutzers

Der durch den TOFU-Mechanismus konfigurierte Benutzer hat Vollzugriff auf den Server, was unter Umständen nicht gewünscht ist. Beckhoff empfiehlt daher in einem nächsten Schritt die Erstellung eines expliziten Benutzers für den reinen Datenzugriff, siehe Empfohlene Schritte.