Note:

Uso de las API de REST de los dominios de identidad y gestión de acceso de OCI mediante la clave de firma de API

Introducción

Al realizar la integración con las API de dominios de identidad de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM), OAuth 2.0 es el método más recomendado para proteger las solicitudes de API. Sin embargo, para ciertos casos de uso, especialmente cuando la simplicidad y la direccionalidad son primordiales, la clave de firma de API ofrece una alternativa viable.

En este tutorial se explorará cómo puede llamar a las API de dominio de identidad de OCI IAM mediante claves de firma de API, proporcionando una opción más sencilla y accesible para desarrolladores y administradores.

¿Por qué utilizar la clave de firma de API?

La clave de firma de API proporciona una forma sencilla de autenticar las solicitudes de API. Son fáciles de generar y utilizar, por lo que son ideales para aplicaciones que requieren un acceso sencillo y programático sin la complejidad del proceso de intercambio de tokens OAuth. Las claves de API son especialmente útiles en escenarios como:

Público Objetivo

Profesionales, desarrolladores y administradores de OCI IAM.

Objetivo

Aproveche la API de REST de dominios de identidad de OCI IAM mediante la clave de firma de API. Para demostrar esto de manera efectiva, se puede utilizar un fragmento de Python para desarrollar un script. En este script se muestra cómo interactuar con las API del dominio de identidad de OCI IAM mediante claves de firma de API para la autenticación. También abarca las operaciones básicas de creación de un grupo, creación de un usuario y asignación del usuario al grupo, lo que demuestra cómo realizar estas acciones mediante programación con solicitudes de API seguras. El uso de claves de API simplifica el proceso, lo que facilita la integración de estas operaciones en flujos de trabajo o scripts automatizados.

Requisitos

Tarea 1: Importación de paquetes de Python y configuración inicial

La parte inicial del script configura las importaciones y configuraciones necesarias para interactuar con las API del dominio de identidad de OCI IAM mediante claves de API.

import requests
import json
from oci.config import from_file
from oci.signer import Signer

Tarea 2: Definición e Inicialización de una Clase

El fragmento define una clase, APISignedRequest, para gestionar interacciones con las API del dominio de identidad de OCI IAM mediante claves de 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'

Tarea 3: Crear Método de Grupo

El método creategroup de la clase APISignedRequest está diseñado para crear un nuevo grupo en el dominio de identidad de OCI IAM.

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

Tarea 4: Crear método de usuario

El método createuser de la clase APISignedRequest está diseñado para crear un nuevo usuario en el dominio de identidad de OCI IAM.

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  

Tarea 5: Asignar usuario a método de grupo

El método assignuser de la clase APISignedRequest maneja el proceso de asignación de un usuario a un grupo en el dominio de identidad de OCI IAM.

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

Tarea 6: Ejecución del flujo

Crear instancia y método de llamada: cree una instancia de APISignedRequest y llame a assignuser para ejecutar todo el flujo.

obj = APISignedRequest()
obj.assignuser()

Tarea 7: Uso del script en OCI Cloud Shell

Una vez que el script está listo, se puede ejecutar fácilmente en la máquina local (con Python instalado) o en cualquier entorno de desarrollo integrado (IDE) que admita el desarrollo de Python. Estamos utilizando OCI Cloud Shell para ejecutar el script y obtener el informe deseado.

  1. Conéctese a la consola de OCI, abra OCI Cloud Shell desde la esquina superior derecha y cargue el script de Python OCIAPISignedRequest.py.

Nota: OCIAPISignedRequest.py es el script de Python desarrollado mediante los fragmentos de código de las tareas anteriores.

Imagen 1

Imagen 2

Imagen 3

  1. Ejecute el comando python OCIAPISignedRequest.py.

Conclusión

El uso de claves de API para llamar a las API del dominio de identidad de OCI IAM proporciona una alternativa sencilla a OAuth, ideal para ciertos casos de uso en los que la simplicidad y la facilidad de uso son cruciales. Después de este tutorial, puede integrarse de forma segura y eficiente con las API del dominio de identidad de OCI IAM, aprovechando la potencia de las claves de API para la autenticación.

Ya sea que esté automatizando tareas administrativas, creando herramientas internas o creando prototipos de aplicaciones, las claves de API ofrecen un método flexible y conveniente para interactuar con los servicios de OCI.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.