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

Ottenere l'accesso all'API REST in un contesto utente

In alcuni scenari, potrebbe essere necessario ottenere l'accesso all'API REST in un contesto utente utilizzando il flusso di autorizzazione dispositivo. I passaggi per configurarlo sono stati documentati in PowerShell, ma è possibile utilizzare qualsiasi linguaggio. Ecco come funziona:

  1. Interroghi l'endpoint di configurazione OpenID well-known per recuperare gli endpoint del token e di autorizzazione dispositivo del server:

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. Invii una richiesta all'endpoint di autorizzazione dispositivo per ottenere un codice dispositivo, un codice utente, un URL di verifica e un URL di verifica completo, nonché i dettagli relativi alla durata di validità dei codici e alla frequenza dei controlli. Quindi, apra un browser sull'URL di verifica completo oppure indichi all'utente di inserire manualmente il proprio codice utente e di approvare la richiesta di accesso del dispositivo:

$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. Avvii un ciclo che invia periodicamente una richiesta all'endpoint del token con il codice dispositivo e il client ID finché il server non restituisce un token di accesso:

  1. Quando necessario, utilizzi il token di aggiornamento ottenuto durante il passaggio n. 1 per richiedere un nuovo token all'endpoint del token, garantendo un accesso continuo all'applicazione:

Consulti la documentazione di Okta per maggiori informazioni sul flusso di autorizzazione dispositivo.

Vedere anche

Ultimo aggiornamento

È stato utile?