For the complete documentation index, see llms.txt. This page is also available as Markdown.

REST-API-Zugriff in einem Benutzerkontext erhalten

In manchen Szenarien müssen Sie möglicherweise den REST-API-Zugriff im Benutzerkontext über den Device Authorization Flow erhalten. Die Schritte zur Einrichtung wurden in PowerShell dokumentiert, aber jede Sprache ist geeignet. So funktioniert es:

  1. Fragen Sie den Well-Known-OpenID-Konfigurationsendpunkt ab, um die Token- und Device-Authorization-Endpunkte des Servers abzurufen:

try {
    $wellKnownResponse = Invoke-RestMethod -Method Get -Uri $wellKnownEndpoint

    $tokenEndpoint = $wellKnownResponse.token_endpoint
    $deviceCodeEndpoint = $wellKnownResponse.device_authorization_endpoint
} catch {
    Write-Error "Error obtaining server information"
    exit
}
  1. Senden Sie eine Anfrage an den Device-Authorization-Endpunkt, um einen Device Code, einen User Code, eine Verifizierungs-URL und eine vollständige Verifizierungs-URL zu erhalten, sowie Details dazu, wie lange die Codes gültig sind und wie oft geprüft werden soll. Öffnen Sie dann entweder einen Browser mit der vollständigen Verifizierungs-URL oder weisen Sie den Benutzer an, seinen bzw. ihren User Code manuell einzugeben und die Geräte-Zugriffsanfrage zu genehmigen:

$body = "client_id=$clientId&scope=$([uri]::EscapeDataString($scope))"

try {
    $deviceCodeResponse = Invoke-RestMethod -Method Post -Uri $deviceCodeEndpoint `
                            -ContentType "application/x-www-form-urlencoded" -Body $body
} catch {
    Write-Error "Failed to obtain device code: $_"
    exit
}

# Extract values from the response (field names may vary by provider)
$device_code               = $deviceCodeResponse.device_code
$user_code                 = $deviceCodeResponse.user_code
$verification_uri          = $deviceCodeResponse.verification_uri
$verification_uri_complete = $deviceCodeResponse.verification_uri_complete
$interval                  = 10   # in seconds
$expires_in                = $deviceCodeResponse.expires_in   # in seconds

# Provide a default interval if none was returned or if it's zero/null
if (-not $interval -or $interval -eq 0) {
    $interval = 5
    Write-Host "Interval not provided or invalid; defaulting to $interval seconds."
}

# Instead of instructing the user, open the browser to the verification_uri_complete
if ($verification_uri_complete) {
    Write-Host "Opening browser for device authorization..."
    Start-Process $verification_uri_complete
} else {
    Write-Host "verification_uri_complete not provided. Please manually go to $verification_uri and enter the code: $user_code"
}
  1. Starten Sie eine Schleife, die periodisch eine Anfrage mit dem Device Code und der Client-ID an den Token-Endpunkt sendet, bis der Server ein Access Token zurückgibt:

  1. Verwenden Sie bei Bedarf das in Schritt 1 erhaltene Refresh Token, um ein neues Token vom Token-Endpunkt anzufordern und so den kontinuierlichen Zugriff auf die Anwendung sicherzustellen:

Weitere Informationen zum Device Authorization Flow finden Sie in Oktas Dokumentation.

Siehe auch

Zuletzt aktualisiert

War das hilfreich?