Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Sfrutta le API REST dei domini di Identity and Access Management OCI utilizzando la chiave di firma API
Introduzione
Durante l'integrazione con le API dei domini di Identity di Oracle Cloud Infrastructure Identity and Access Management (OCI IAM), OAuth 2.0 è il metodo più comunemente consigliato per proteggere le richieste API. Tuttavia, per alcuni casi d'uso, in particolare dove semplicità e immediatezza sono fondamentali, la chiave di firma API offre un'alternativa praticabile.
Questa esercitazione descrive come richiamare le API del dominio di Identity IAM OCI utilizzando le chiavi di firma API, fornendo un'opzione più semplice e accessibile per sviluppatori e amministratori.
Perché utilizzare API Signing Key?
La chiave di firma API fornisce un modo semplice per autenticare le richieste API. Sono facili da generare e utilizzare, rendendoli ideali per applicazioni che richiedono un accesso semplice e programmatico senza la complessità del processo di scambio di token OAuth. Le API key sono particolarmente utili in scenari come:
-
Script automatizzati e job cron: semplicità nell'autenticazione senza dover gestire i token.
-
Applicazioni interne: complessità ridotta per i servizi in esecuzione in una rete affidabile.
-
Prototipazione e sviluppo: impostazione rapida per test e debug.
Destinatari
Professionisti, sviluppatori e amministratori di IAM OCI.
Obiettivo
Utilizza l'API REST dei domini di Identity IAM OCI utilizzando la chiave di firma API. Per dimostrarlo in modo efficace, è possibile utilizzare lo snippet Python per sviluppare uno script. Questo script illustra come interagire con le API del dominio di Identity IAM OCI utilizzando le chiavi di firma API per l'autenticazione. Copre anche le operazioni di base di creazione di un gruppo, creazione di un utente e assegnazione dell'utente al gruppo, dimostrando come eseguire queste azioni a livello di programmazione con richieste API sicure. L'utilizzo di API key semplifica il processo, semplificando l'integrazione di queste operazioni in flussi di lavoro o script automatizzati.
Prerequisiti
-
Account OCI: accedi al tuo account Oracle Cloud Infrastructure.
-
Chiave di firma API: coppia di chiavi pubblico-privato per l'accesso alle richieste in formato PEM. Per ulteriori informazioni, vedere Come generare una chiave di firma API.
-
Familiarità con IAM e Python OCI.
-
La conoscenza dell'API REST dei domini di Identity OCI IAM è obbligatoria.
-
Utente IAM OCI con autorizzazione per gestire le applicazioni (amministratore del dominio di Identity, amministratore della sicurezza o amministratore delle applicazioni).
-
Python 3.x installato.
-
Pacchetti
requests
ejson
Python installati.
Task 1: Importa pacchetti Python e configurazione iniziale
La parte iniziale dello script imposta le importazioni e le configurazioni necessarie per l'interazione con le API del dominio di Identity IAM OCI utilizzando le chiavi API.
import requests
import json
from oci.config import from_file
from oci.signer import Signer
requests
: libreria HTTP semplice in Python per effettuare richieste HTTP.json
: libreria per l'analisi dei dati JSON.from_file
: funzione per leggere la configurazione OCI da un file.Signer
: classe per la firma delle richieste HTTP con una chiave API.
Task 2: Definisci e inizializza una classe
Lo snippet definisce una classe, APISignedRequest
, per gestire le interazioni con le API del dominio di Identity IAM OCI utilizzando le chiavi API.
class APISignedRequest():
def __init__(self):
global auth
global identity_domain
global config
config = from_file()
auth = Signer(
tenancy=config['tenancy'],
user=config['user'],
fingerprint=config['fingerprint'],
private_key_file_location=config['key_file']
)
identity_domain = 'https://idcs-############################.identity.oraclecloud.com'
- Classe
APISignedRequest
: questa classe incorpora i metodi per eseguire le richieste API nei domini di Identity IAM OCI. - Metodo
init
: inizializza la classe impostando le variabili globaliauth
,identity_domain
econfig
.config:
caricato dal file di configurazione OCI predefinito.auth
: istanza del firmatario utilizzata per firmare le richieste API con la chiave API.identity_domain
: l'URL di base per l'istanza del dominio di Identity.
Task 3: Crea metodo gruppo
Il metodo creategroup
nella classe APISignedRequest
è progettato per creare un nuovo gruppo nel dominio di Identity IAM OCI.
def creategroup(self):
extra = "/admin/v1/Groups"
body = {
"displayName": "Example Group",
"externalId": "123456",
"urn:ietf:params:scim:schemas:oracle:idcs:extension:group:Group": {
"creationMechanism": "api",
"description": "Example Description"
},
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group",
"urn:ietf:params:scim:schemas:oracle:idcs:extension:group:Group",
"urn:ietf:params:scim:schemas:extension:custom:2.0:Group"
]
}
response = requests.post(identity_domain + extra, auth=auth, json=body)
jsonresp = json.loads(response.content)
grpid = jsonresp.get("id")
print("Group has been created")
return grpid
- Metodo
creategroup
: invia una richiesta POST per creare un nuovo gruppo nel dominio di Identity.extra
: l'endpoint API per la creazione di gruppi.body
: payload JSON contenente i dettagli del gruppo.requests.post
: invia la richiesta POST con il firmatarioauth
ebody
.json.loads
: analizza la risposta JSON.grpid
: estrae e restituisce l'ID gruppo dalla risposta.
Task 4: Crea metodo utente
Il metodo createuser
nella classe APISignedRequest
è progettato per creare un nuovo utente nel dominio di Identity IAM OCI.
def createuser(self):
extra = "/admin/v1/Users"
body = {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"name": {
"givenName": "Test",
"familyName": "User"
},
"userName": "testuser@example.com",
"emails": [
{
"value": "testuser@example.com",
"type": "work",
"primary": True
},
{
"value": "testuser@example.com",
"primary": False,
"type": "recovery"
}
]
}
response = requests.post(identity_domain + extra, auth=auth, json=body)
jsonresp = json.loads(response.content)
userid = jsonresp.get("id")
print("User has been created")
return userid
- Metodo
createuser
: invia una richiesta POST per creare un nuovo utente nel dominio Oracle Identity.extra
: l'endpoint API per la creazione degli utenti.body
: payload JSON contenente i dettagli utente.requests.post
: invia la richiesta POST con il firmatarioauth
ebody
.json.loads
: analizza la risposta JSON.grpid
: estrae e restituisce l'ID utente dalla risposta.
Task 5: Assegna utente a metodo gruppo
Il metodo assignuser
nella classe APISignedRequest
gestisce il processo di assegnazione di un utente a un gruppo nel dominio di Identity IAM OCI.
def assignuser(self):
extra = "/admin/v1/Groups/"
obj = APISignedRequest()
grpid = obj.creategroup()
gid = str(grpid)
userid = obj.createuser()
body = {
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "add",
"path": "members",
"value": [
{
"value": userid,
"type": "User"
}
]
}
]
}
response = requests.patch(identity_domain + extra + gid, auth=auth, json=body)
print("User has been assigned to the group")
- Metodo
assignuser
: organizza la creazione di un gruppo e di un utente, quindi assegna l'utente al gruppo.extra
: l'endpoint API per le operazioni di gruppo.creategroup
: crea un gruppo e recupera il relativo ID.createuser
: crea un utente e recupera il relativo ID.body
: payload JSON per applicare patch al gruppo aggiungendo l'utente ai relativi membri.requests.patch
: invia la richiesta PATCH per aggiornare il gruppo con il nuovo utente.
Task 6: Esecuzione del flusso
Crea istanza e metodo di chiamata: creare un'istanza di APISignedRequest
e chiamare assignuser
per eseguire l'intero flusso.
obj = APISignedRequest()
obj.assignuser()
Task 7: utilizzare lo script in OCI Cloud Shell
Una volta che lo script è pronto, può essere facilmente eseguito sul computer locale (con Python installato) o su qualsiasi ambiente di sviluppo integrato (IDE) che supporti lo sviluppo di Python. Si sta utilizzando OCI Cloud Shell per eseguire lo script e ottenere il report desiderato.
- Eseguire il login a OCI Console, aprire OCI Cloud Shell dall'angolo superiore destro e caricare lo script Python
OCIAPISignedRequest.py
.
Nota:
OCIAPISignedRequest.py
è lo script Python sviluppato utilizzando gli snippet di codice dei task precedenti.
- Eseguire il comando
python OCIAPISignedRequest.py
.
Conclusione
L'uso delle chiavi API per richiamare le API del dominio di Identity IAM OCI fornisce una semplice alternativa a OAuth, ideale per alcuni casi d'uso in cui semplicità e facilità d'uso sono fondamentali. Dopo questa esercitazione, puoi eseguire l'integrazione in modo sicuro ed efficiente con le API del dominio di Identity IAM OCI, sfruttando la potenza delle chiavi API per l'autenticazione.
Che si tratti di automatizzare le attività amministrative, creare strumenti interni o creare prototipi di applicazioni, le API key offrono un metodo flessibile e conveniente per interagire con i servizi OCI.
Collegamenti correlati
Conferma
- Autore - Gautam Mishra (Senior Cloud Engineer)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Leverage OCI Identity and Access Management Identity Domains REST APIs using API Signing Key
F99703-01
May 2024