Authentifizierung für automatische Scripte
Nachdem alle möglichen Authentifizierungsmethoden deprecated sind bzw. werden stellt sich für mich die Frage wie ich folgende zwei Szenarienlösen kann:
Ein Kunde von mit nutzt Dracoon als Fileshare Lösung für seine Kunden. Für jeden Kunden wird über ein Script mit Hilfe der REST API eine Ordnerstruktur mit Berechtigungen erzeugt. Bisher habe ich einfach die SQL/Basic Authentifizierung mit einem technischen User genutzt. Es ist in diesem Szenario nur schwer möglich, dass sich der Benutzer jedes Mal wenn das Script läuft authentifizieren muss. Das wäre ein massiver Rückschritt in der Automatisierung.
In einem anderen Fall möchte ich aus einer Webanwendung heraus automatisch Daten in Dracoon hochladen. Auch dafür benötige ich eine Art Silent Variante mit der sich die Webanwendung in Dracoon anmelden kann ohne User Interaktion, da diese in dem Fall gar nicht möglich wäre, weiil das ganze am Server im Hintergrund läuft.
Bitte um dringende Unterstützung zu diesem Thema.
-
Offizieller Kommentar
Wir sind uns bewusst, dass viele unserer Kunden Skripte und Automatisierungen auf Basis von DRACOON entwickelt haben. Bezüglich des Authentifizierungs-/Autorisierungsworkflows setzt DRACOON zukünftig ausschließlich auf den offenen Standard OAuth 2.0. In OAuth existiert für das von Ihnen beschriebene Szenario ein eigener Flow: der two-legged OAuth-Flow. Dieser ist nicht-interaktiv und erlaubt es, wie bisher im Skript die Zugangsdaten zu hinterlegen.
Um diesen OAuth-Flow zu nutzen, legen Sie als Config-Manager in den Systemeinstellungen > Apps einen neuen OAuth Client an. Wichtig ist, dass Sie als grant_type "Password" festlegen.
Anschließend führen Sie folgenden Request aus, um einen Access Token zu erhalten:
Beispiel: cURL Access Token Request:
curl -X POST \
https://[DRACOON_HOSTNAME]/oauth/token \
-H 'Authorization: Basic [BASE64_ENCODED [CLIENT_ID]:[CLIENT_SECRET]]' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=password&username=[USER_NAME]&password=[PASSWORD]'Beispiel: PowerShell Access Token Request:
$Uri = "https://[DRACOON_HOSTNAME]/oauth/token"
$Username = "[USER_NAME]"
$Password = "[PASSWORD]"
$ClientId = "[CLIENT_ID]"
$ClientSecret = "[CLIENT_SECRET]"
$Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $ClientId,$ClientSecret)))
$Body = @{ "grant_type" = "password"; "username" = $Username; "password" = $Password }
$Response = Invoke-WebRequest -URI $Uri -Method Post -ContentType "application/x-www-form-urlencoded" -Body $Body -Headers @{Authorization=("Basic {0}" -f $Base64AuthInfo)}
$Content = ConvertFrom-Json $Response.content
$Token = $Content.access_token
Write-Output $TokenDanach können Sie den Access Token verwenden, um authentifizierte Requests an die API zu senden. Hier ein Beispiel zum Abrufen der Accountinformationen in cURL und PowerShell:
Beispiel: cURL Request account information:
curl -X GET \
https://[DRACOON_HOSTNAME]/api/v4/user/account \
-H 'Authorization: Bearer [ACCESS_TOKEN]'Beispiel: PowerShell Request account information:
$Uri = "https://[DRACOON_HOSTNAME]/api/v4/user/account"
$Token = "[ACCESS_TOKEN]"
$Response = Invoke-WebRequest -URI $Uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Bearer {0}" -f $Token)}
$Content = ConvertFrom-Json $Response.content
Write-Output $ContentIch hoffe, diese Informationen helfen Ihnen weiter.
Aktionen für Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar