Nota

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:

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

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

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'

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

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  

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")

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.

  1. 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.

Immagine 1

Immagine 2

Immagine 3

  1. 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.

Conferma

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.