Hinweis:

OCI Identity and Access Management-REST-APIs für Identitätsdomains mit API-Signaturschlüssel nutzen

Einführung

Bei der Integration mit Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Identitätsdomains-APIs ist OAuth 2.0 die am häufigsten empfohlene Methode zum Sichern von API-Anforderungen. Für bestimmte Anwendungsfälle, insbesondere wenn Einfachheit und Direktheit im Vordergrund stehen, bietet der API-Signaturschlüssel jedoch eine praktikable Alternative.

In diesem Tutorial wird erläutert, wie Sie OCI IAM-Identitätsdomain-APIs mit API-Signaturschlüsseln aufrufen können. Dadurch erhalten Entwickler und Administratoren eine einfachere und zugänglichere Option.

Gründe für die Verwendung des API-Signaturschlüssels

Der API-Signaturschlüssel bietet eine einfache Möglichkeit, API-Anforderungen zu authentifizieren. Sie sind einfach zu generieren und zu verwenden, was sie ideal für Anwendungen macht, die einfachen, programmatischen Zugriff erfordern, ohne dass der Tokenaustauschprozess OAuth komplex ist. API-Schlüssel sind insbesondere in folgenden Szenarios nützlich:

Zielgruppe

OCI-IAM-Experten, -Entwickler und -Administratoren.

Zielsetzung

Nutzen Sie die OCI-IAM-Identitätsdomains-REST-API mit dem API-Signaturschlüssel. Um dies effektiv zu demonstrieren, kann mit dem Python-Snippet ein Skript entwickelt werden. Dieses Skript veranschaulicht die Interaktion mit OCI-IAM-Identitätsdomain-APIs mit API-Signaturschlüsseln zur Authentifizierung. Außerdem werden die grundlegenden Vorgänge zum Erstellen einer Gruppe, Erstellen eines Benutzers und Zuweisen des Benutzers zu der Gruppe behandelt. Dabei wird gezeigt, wie diese Aktionen programmgesteuert mit sicheren API-Anforderungen ausgeführt werden. Die Verwendung von API-Schlüsseln vereinfacht den Prozess und erleichtert die Integration dieser Vorgänge in automatisierte Workflows oder Skripte.

Voraussetzungen

Aufgabe 1: Python-Packages importieren und anfängliches Setup

Im ersten Teil des Skripts werden die erforderlichen Importe und Konfigurationen für die Interaktion mit OCI-IAM-Identitätsdomain-APIs mit API-Schlüsseln eingerichtet.

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

Aufgabe 2: Klassen definieren und initialisieren

Das Snippet definiert eine Klasse, APISignedRequest, um Interaktionen mit OCI-IAM-Identitätsdomain-APIs mit API-Schlüsseln zu verwalten.

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'

Aufgabe 3: Gruppenverfahren erstellen

Die Methode creategroup in der Klasse APISignedRequest dient zum Erstellen einer neuen Gruppe in der OCI-IAM-Identitätsdomain.

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

Aufgabe 4: Benutzermethode erstellen

Die Methode createuser in der Klasse APISignedRequest dient zum Erstellen eines neuen Benutzers in der OCI-IAM-Identitätsdomain.

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  

Aufgabe 5: Benutzer zu Gruppenart zuweisen

Die Methode assignuser in der Klasse APISignedRequest verarbeitet den Prozess der Zuweisung eines Benutzers zu einer Gruppe in der OCI-IAM-Identitätsdomain.

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

Aufgabe 6: Ablauf ausführen

Instanz erstellen und Aufrufmethode: Erstellen Sie eine Instanz von APISignedRequest, und rufen Sie assignuser auf, um den gesamten Ablauf auszuführen.

obj = APISignedRequest()
obj.assignuser()

Aufgabe 7: Skript in OCI Cloud Shell verwenden

Sobald das Skript fertig ist, kann es einfach auf dem lokalen Rechner (mit installiertem Python) oder in einer integrierten Entwicklungsumgebung (IDE) ausgeführt werden, die Python-Entwicklung unterstützt. Wir verwenden OCI Cloud Shell, um das Skript auszuführen und den gewünschten Bericht abzurufen.

  1. Melden Sie sich bei der OCI-Konsole an, öffnen Sie die OCI Cloud Shell oben rechts, und laden Sie das Python-Skript OCIAPISignedRequest.py hoch.

Hinweis: OCIAPISignedRequest.py ist das Python-Skript, das mit den oben genannten Code-Snippets für Aufgaben entwickelt wurde.

Bild 1

Bild 2

Bild 3

  1. Führen Sie den Befehl python OCIAPISignedRequest.py aus.

Schlussfolgerung

Die Verwendung von API-Schlüsseln zum Aufrufen von OCI-IAM-Identitätsdomain-APIs bietet eine einfache Alternative zu OAuth, ideal für bestimmte Anwendungsfälle, bei denen Einfachheit und Benutzerfreundlichkeit von entscheidender Bedeutung sind. Nach diesem Tutorial können Sie sicher und effizient mit OCI-IAM-Identitätsdomain-APIs integrieren und dabei die Leistungsfähigkeit von API-Schlüsseln für die Authentifizierung nutzen.

Unabhängig davon, ob Sie administrative Aufgaben automatisieren, interne Tools erstellen oder Anwendungen prototypisieren, bieten API-Schlüssel eine flexible und bequeme Methode für die Interaktion mit OCI-Services.

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.