Profil eines Benutzers via REST API setzen

Auf dem Partner-Summit wurde sich gewünscht, einige der gezeigten Beispiel-Skripte im Forum zum nachlesen zur Verfügung zu stellen. Thema hier:

Wie kann man ein bestimmtes Profil für einen Benutzer finden und aktivieren?

Dazu braucht es zwei Anfragen aus dem identity modul der REST API.

Angenhängt ist ein Powershell-Beispielskript, mit dem ein Profil anhand seines Anzeigenames gesucht und aktiviert werden kann.

Vorgehensweise:

  1. Rest API aktivieren und Zugangsdaten besorgen, siehe Dokumentation: pascom API Documentation
  2. Das untere Skript in einen Editor einfügen
  3. Die Parameter auf die jeweilige eigene Instanz anpassen
  4. Skript mit der endung .ps1 abspeichern und ausführen. Dabei auf die Powershell-Execution Policy achten.
##########################################
# PARAMETER
$headers = @{
    Authorization = "Basic BASE65_AUTH_STRING"
}

$instance="instanz" # Instanzname der pascom.cloud instanz 
$user="user"        # Anmeldename des Ziel-Benutzers
$targetName="DND"   # Name des Profils das ausgwaehlt werden soll
$profileId=""       # Id des Profils falls dieses gefunden wird
##########################################

# Profil liste dieses Benutzers abrufen
$response = Invoke-WebRequest -Headers $headers -Method Get -Uri "https://pascom.cloud/$instance/services/identity/$user/profile/"

# JSON string in eine Datenstruktur parsen
$profiles = $response.Content | ConvertFrom-Json

# Ueber jedes Profil iterieren
foreach ($profile in $profiles) {
    $name = $profile.'017pro_bez'
    if($name -eq $targetName) {
        $profileId=$profile.'017pro_id'
        Write-Host "Profil $name hat id $profileId"
        break;
    }
}

# Pruefen ob die ProfilId leer ist
if($profileId) {
    Write-Host "Aktiviere Profil"
    # Ziel Profil aktivieren
    Invoke-WebRequest -Headers $headers -Method Put -Uri "https://pascom.cloud/$instance/services/identity/$user/profile/$profileId/activate"
}