Authentifizierung mit OpenstackSDK mit Keycloak Credentials auf CODE-DE

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 CODE-DE in das Konto https://administration.code-de.org/login manuell an. Es erscheint ein Bildschirm wie dieser:

../_images/register_code-de_de1.png

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 CODE-DE 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.