Authentifizierung mit OpenstackSDK mit Keycloak Credentials auf EO-Lab
Wenn Sie OpenStackSDK verwenden, um Ihr eigenes Skript für OpenStack zu schreiben, wird der Code in diesem Tutorial den Benutzer in die Lage versetzen, sich automatisch bei Ihrer Anwendung anzumelden. Normalerweise melden sich Benutzer mit EO-Lab in das Konto https://tenant-manager.eo-lab.org/login manuell an. Es erscheint ein Bildschirm wie dieser:

Wenn sie bereits ein Konto haben, werden sie nach einem Klick auf die Schaltfläche „Anmelden“ eingeloggt. Die Anleitung in diesem Artikel vermeidet diese Prozedur. Wenn er bereits bei OpenStack authentifiziert wurde, kann er sich mit seinem Code anmelden, ohne den Anmeldebildschirm zu sehen.
Was werden wir tun?
Python, pip und Venv-Umgebungen einrichten,
Herunterladen der RC-Datei von Horizon,
Diese Datei auslesen (ausführen und das Passwort angeben, um sich am System zu authentifizieren),
Python-Code vorbereiten, um sich mit den Werten aus der RC-Datei bei Keycloak zu authentifizieren.
Voraussetzungen
Nr. 1 Python und seine Umgebung installieren
Der folgende Artikel hilft Ihnen bei der Installation von Python und pip, sowie Venv.: Wie installiert man Python virtualenv/virtualenvwrapper.
Nr. 2 RC File
Die RC-Datei ist über das OpenStack Horizon-Modul verfügbar und dient als Authentifizierungsquelle für den Benutzer. Für technische Details, wie man sie erhält und aktiviert, siehe Installation von OpenStack- und Magnum-Clients für die Befehlszeilenschnittstelle von EO-Lab Horizon.
Schritt 1 Quellcode der RC-Datei
Laden Sie mit Hilfe von Voraussetzung Nr. 2 die entsprechende RC-Datei herunter. Diese Datei kann in Linux/UNIX-Umgebungen mit einem source-Befehl ausgeführt werden. Nach der Ausführung werden Sie nach dem Passwort gefragt und damit authentifiziert.
Hier sind die Systemvariablen (ihre Namen beginnen alle mit OS_), die der Befehl source ebenfalls einrichtet:
export OS_AUTH_URL=https://keystone.cloudferro.com:5000/v3
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
export OS_USERNAME="Your E-mail Adress"
export OS_REGION_NAME="WAW3-1"
export OS_PROJECT_ID="Your Project ID"
export OS_PROJECT_NAME="Your Project Name"
export OS_PROJECT_DOMAIN_ID="Your Domain ID"
export OS_AUTH_TYPE=v3oidcpassword
export OS_PROTOCOL=openid
export OS_DISCOVERY_ENDPOINT=https://identity.cloudferro.com/auth/realms/Creodias-new/.well-known/openid-configuration
export OS_IDENTITY_PROVIDER=ident_creodias-new_provider
export OS_CLIENT_ID=openstack
export OS_CLIENT_SECRET=50xx4972-546x-46x9-8x72-x91x401x8x30
Schritt 2 Erstellen Sie den Python-Code, der die Keycloak-Authentifizierung innerhalb Ihrer Anwendung durchführt
In diesem Schritt werden Sie die Werte aus der RC-Datei in Ihren Python-Code kopieren. Zum Beispiel, die Variable
OS_DISCOVERY_ENDPOINT=https://identity.cloudferro.com/auth/realms/Creodias-new/.well-known/openid-configuration
aus der RC-Datei wird der Wert der gleichnamigen Variablen in Ihrem Code:
auth['discovery_endpoint'] = "https://identity.cloudferro.com/auth/realms/Creodias-new/.well-known/openid-configuration"
So sollte Ihr Code am Ende aussehen:
from openstack import connection
import sys
import os
from openstack import enable_logging
auth = {}
auth['auth_url'] = "https://keystone.cloudferro.com:5000/v3"
auth['username'] = "Your E-mail Adress"
auth['password'] = os.getenv('OS_PASSWORD')
auth['project_domain_id'] = "Your Domain ID"
auth['project_name'] = "Your Project Name"
auth['project_id'] = "Your Project ID"
auth['discovery_endpoint'] = "https://identity.cloudferro.com/auth/realms/Creodias-new/.well-known/openid-configuration"
auth['client_id'] = "openstack"
auth['identity_provider'] = 'ident_creodias-new_provider'
auth['client_secret'] = os.getenv('OS_CLIENT_SECRET')
auth['protocol'] = 'openid'
Schritt 3 Verwenden Sie den Code in Ihrer Anwendung
Sobald dieser Code generiert ist, wird der Benutzer authentifiziert und muss seine Anmeldedaten nicht jedes Mal eingeben, wenn er versucht, sich anzumelden.