Antwortbody

Die REST-API-Anforderungen für Identitätsdomains geben einen JSON-Antwortbody zurück. Der Statuscode gibt Erfolg oder Misserfolg an.

Unterstützte Antwortcodes

Hinweis

Weitere Informationen zu den unterstützten Antwortcodes finden Sie unter Antwortcodes.

Antwortbody bei Erfolg

Das Antwortformat für alle REST-API-Anforderungen ist ein JSON-Objekt. Der genaue Inhalt der Antwort hängt vom Inhalt und vom Typ der Anforderung ab, ob die Anforderung erfolgreich oder nicht erfolgreich war, und von der ausgeführten Abfragefilterung.

Hinweis

Spezifische Beispiele für Antwortbody finden Sie auf der Registerkarte Beispiele auf jeder Endpunktseite.

Erfolgreicher POST-Antwortbody

Im Folgenden finden Sie eine Beispielantwort, die angibt, dass eine User-Ressource mit einer POST-Anforderung erfolgreich erstellt wurde:

{
    "idcsCreatedBy": {
        "type": "App",
        "display": "Confidential App",
        "value": "<app-id>",
        "ocid": "<app-ocid>",
        "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
    },
    "id": "<user-id>",
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
        "isFederatedUser": false
    },
    "meta": {
        "created": "2023-08-29T21:04:25.379Z",
        "lastModified": "2023-08-29T21:04:25.379Z",
        "version": "7fd6be02ffc542809e3ea193d1942df7",
        "resourceType": "User",
        "location": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "active": true,
    "displayName": "Clarence Saladna",
    "idcsLastModifiedBy": {
        "value": "<app-id>",
        "display": "Confidential App",
        "ocid": "<app-ocid>",
        "type": "App",
        "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
    },
    "name": {
        "givenName": "Clarence",
        "familyName": "Saladna",
        "formatted": "Clarence Saladna"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
        "locked": {
            "on": false
        }
    },
    "ocid": "<user-ocid>",
    "userName": "csaladna@example.com",
    "emails": [
        {
            "secondary": false,
            "verified": false,
            "type": "recovery",
            "primary": false,
            "value": "csaladna@example.com"
        },
        {
            "secondary": false,
            "verified": false,
            "type": "work",
            "primary": true,
            "value": "csaladna@example.com"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
    ],
    "domainOcid": "<domain-ocid>",
    "compartmentOcid": "<compartment-ocid>",
    "tenancyOcid": "<tenancy-ocid>",
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
        "canUseApiKeys": true,
        "canUseAuthTokens": true,
        "canUseConsolePassword": true,
        "canUseCustomerSecretKeys": true,
        "canUseOAuth2ClientCredentials": true,
        "canUseSmtpCredentials": true,
        "canUseDbCredentials": true
    }
}

GET-Antwortbody erfolgreich

GET-Anforderungen geben in der Regel ein ListResponse-Objekt zurück, das mehrere Datensätze enthalten kann. Dieses Beispiel zeigt die Ergebnisse einer GET-Suche nach Benutzern mit dem Abfrageparameter filter=userName sw "d", d.h. Benutzern, deren Benutzernamen mit d beginnen.

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "Resources": [
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "dennis@example.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-08-15T20:48:12.736Z",
                "lastModified": "2023-08-15T20:48:12.736Z",
                "version": "087a80ea35614663b05ea69b24b425a7",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Dean",
            "idcsLastModifiedBy": {
                "value": "OCI User",
                "display": "dean@example.com",
                "ocid": "<user-ocid>",
                "type": "User",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "name": {
                "givenName": "Dean",
                "familyName": "",
                "formatted": "Dean"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "dean@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": false,
                    "type": "recovery",
                    "primary": false,
                    "value": "dean@example.com"
                },
                {
                    "secondary": false,
                    "verified": false,
                    "type": "work",
                    "primary": true,
                    "value": "dean@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        },
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "joel@example.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-07-19T18:23:28.381Z",
                "lastModified": "2023-08-09T16:22:41.590Z",
                "version": "0ecbeddb823247d8a24a67739b006892",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Dennis",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User": {
                "preferredDevice": {
                    "value": "<device-id>",
                    "$ref": "https://<domainURL>/admin/v1/Devices/<device-id>"
                },
                "loginAttempts": 0,
                "mfaStatus": "ENROLLED",
                "preferredAuthenticationFactor": "PUSH"
            },
            "idcsLastModifiedBy": {
                "value": "<app-id>",
                "display": "idcssso",
                "ocid": "<app-ocid>",
                "type": "App",
                "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
            },
            "name": {
                "givenName": "Dennis",
                "familyName": "",
                "formatted": "Dennis"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "dennis@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": true,
                    "type": "recovery",
                    "primary": false,
                    "value": "dennis@example.com"
                },
                {
                    "secondary": false,
                    "verified": true,
                    "type": "work",
                    "primary": true,
                    "value": "dennis@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        },
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "colin.torretta@oracle.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-08-21T22:36:22.978Z",
                "lastModified": "2023-08-22T03:00:22.934Z",
                "version": "d91908a80bb44ea8bc23e063b42a5e1b",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Diane",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User": {
                "preferredDevice": {
                    "value": "<device-id>",
                    "$ref": "https://<domainURL>/admin/v1/Devices/<device-id>"
                },
                "mfaStatus": "ENROLLED",
                "preferredAuthenticationFactor": "TOTP"
            },
            "idcsLastModifiedBy": {
                "value": "<app-id>",
                "display": "idcssso",
                "ocid": "<app-ocid>",
                "type": "App",
                "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
            },
            "name": {
                "givenName": "Diane",
                "familyName": "",
                "formatted": "Diane"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "diane@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": true,
                    "type": "recovery",
                    "primary": false,
                    "value": "diane@example.com"
                },
                {
                    "secondary": false,
                    "verified": true,
                    "type": "work",
                    "primary": true,
                    "value": "diane@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        }
    ],
    "startIndex": 1,
    "itemsPerPage": 50
}

Einfacher Antworttext bei Fehler

Bei Fehler und bei Erfolg ist der Antwortbody JSON. Das Format für alle REST-API-Fehlerantworten für Identitätsdomains ist ähnlich. Dieses Beispiel ist eine einfache Ausnahme, die den Statuscode und die Ausnahmemeldung für eine ungültige Anforderung detailliert beschreibt.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error"
  ],
  "detail": "Request failed: HTTP 400 Bad Request.",
  "status": "400"
}

Antwort auf Validierungsausnahme - Beispiel

Dieses Beispiel ist eine Validierungsausnahme, bei der einige erforderliche Attribute fehlen.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
  ],
  "detail": "Missing required attribute(s): mappingAttributeValue,password.",
  "status": "400",
  "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
    "messageId": "error.common.validation.missingReqAttributes"
  }
}

Antwort auf Funktionsausnahmen - Beispiel

Dieses Beispiel ist eine funktionale Ausnahme mit zusätzlichen Details.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
  ],
  "detail": "INVALID_CREDENTIALS",
  "status": "400",
  "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
    "additionalData": {
      "csr": false,
      "tenantName": "TENANT1",
      "id": "<tenancy-id>",
      "displayName": "Jane Smith",
      "locale": "en",
      "preferredLanguage": "en",
      "timezone": "America/Chicago"
    }
  }
}

Dynamische Überwachung mit ECID- und RID-HTTP-Headern

Dynamische Überwachung ist der Mechanismus, mit dem HTTP-Anforderungen eindeutig identifiziert und somit beim Durchlaufen des Systems verfolgt werden können.

Es bietet auch ein Mittel, mit dem Kontextinformationen zwischen kooperierenden Identitätsdomainkomponenten, die an der Erfüllung von Anforderungen beteiligt sind, kommuniziert werden können. Die Ausführungskontext-ID (ECID) und die Beziehungs-ID (RID) sind nützlich, um die Abfolge von Ereignissen zwischen Services zu verfolgen.

  • Die ECID: Eine eindeutige ID. Die ECID ist für jede neue Hauptaufgabe eindeutig. Diese Zahl bleibt gleich wie in der Baumstruktur der Aufgaben, die mit der Hauptaufgabe verknüpft sind.

  • Die RID: Eine Beziehungs-ID. Die RID ist eine geordnete Gruppe von Zahlen, die den Speicherort jeder Aufgabe in der Aufgabenhierarchie beschreibt. Die führende Zahl ist in der Regel eine Null, und dann erhöhen sich die Zahlen für jede zusätzliche Unteraufgabe.

Die HTTP-Header X-ORACLE-DMS-ECID und X-ORACLE-DMS-RID werden als Teil der REST-Antwort von der Identitätsdomain zurückgegeben. Diese HTTP-Header entsprechen der ECID und der RID der Anforderung. Die Werte für diese Header werden von der Identitätsdomain festgelegt, wenn die Antwort zurückgegeben wird. Der Aufrufer kann die ECID und die RID verwenden, um Anforderungen zu verfolgen und zu korrelieren, die von Ereignissen aus der Identitätsdomain stammen.

Beispiel: Der Client kann diese Werte als Teil einer Fehlermeldung einschließen, da es wichtig ist, Ereignisse auf der Clientseite mit Fehlern auf der Serverseite zu korrelieren. Das Oracle-Standardformat für das Logging umfasst ein Feld, das für die ECID dediziert ist. Wenn die ECID bekannt ist und beispielsweise aus einer Logmeldung auf Fehlerebene gelesen wird, können Sie alle anderen mit dieser Aufgabe verknüpften Logmeldungen suchen, indem Sie die Logdateien auf Meldungen abfragen, die diese ECID enthalten.

Mit den Diagnosedatenberichten für Identitätsdomains können Sie Loggingdaten anzeigen, die zu Diagnosezwecken erfasst wurden. Sie finden die ECID und die RID im Bericht und korrelieren diese IDs dann mit der ECID und der RID, die von den REST-Aufrufen der Identitätsdomains zurückgegeben werden, die Ihre Anwendungen ausführen. Siehe Diagnosedatenbericht ausführen.

Beispiele für dynamisches Monitoring

Dieser Abschnitt enthält Beispiele, die Folgendes zeigen:
  • Eine POST-Anforderung am Endpunkt /Users.

  • Die cURL-Befehlsheader, die das Ergebnis der Ausführung des POST auf dem /Users-Endpunkt sind.

  • Eine Rückgabeantwort einer GET für den Endpunkt /AuditEvents, die zeigt, dass die ECID mit der vom Server zum Erstellen des Benutzers verwendeten ID identisch ist.

  • Ein Abschnitt des Diagnoseberichts, der generiert wurde, als die POST-Anforderung am Endpunkt /Users ausgeführt wurde.

POST-Anforderung an/Benutzer

curl -X POST -D dumpedHeadersPostUsers.txt
http://<domainURL>/admin/v1/Users
-H 'Authorization: Bearer eyJ4NXQjUzI....poYw'
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '{
   "schemas": [ 
    "urn:ietf:params:scim:schemas:core:2.0:User"
   ],
   "name": {
 	"givenName": "Clarence",
 	"familyName": "Saladna"
   },
   "userName": "csaladna@example.com",
   "emails": [
 	{
 	  "value": "csaladna@example.com",
 	  "type": "work",
 	  "primary": true
 	},
 	{
 	  "value": "csaladna1@example.com",
 	  "primary": false,
 	  "type": "recovery" 
	}
   ]
 }'

cURL-Befehlsheader in der Antwort

HTTP/1.1 201 Created
Date: Thu, 04 Jan 2018 12:57:37 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 1227
Proxy-Connection: Keep-Alive
X-ORACLE-DMS-RID: 0
X-ORACLE-DMS-ECID: 0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K

Antwort auf die GET-Anforderung an /AuditEvents

Hinweis: In diesem Beispiel wird gezeigt, dass die ECID mit der vom Server zum Erstellen des Benutzers verwendeten ECID identisch ist.

Anforderung
http://<domainURL>/admin/v1/AuditEvents?filter=actorName sw "adm" and ecId eq "0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K^"

Response

{
  "schemas": [
    "urn:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "Resources": [
    {
      "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
      },
      "actorName": "admin@oracle.com",
      "id": "2a02fb8bc9a548edb21fe1c80ff6ada0",
      "actorDisplayName": "admin opc",
      "meta": {
        "created": "2024-01-04T12:57:46.314Z",
        "lastModified": "2024-01-04T12:57:46.314Z",
        "resourceType": "AuditEvent",
        "location": "https://<domainURL>/admin/v1/AuditEvents/2a02fb8bc9a548edb21fe1c80ff6ada0"
      },
      "actorId": "<user-id>",
      "adminResourceId": "a06ff8169b3640a29792a15ece75c906",
      "adminResourceName": "csaladna@example.com",
      "timestamp": "2024-01-04T12:57:46.312Z",
      "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
      },
      "quotaCount": 0,
      "ecId": "0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K^",
      "rId": "0",
      "eventId": "admin.user.create.success",
      "ssoAuthnLevel": 0,
      "adminResourceType": "User",
      "actorType": "User",
      "serviceName": "Admin",
      "adminValuesAdded": "{\"schemas\":[\"urn:ietf:params:scim:schemas:core:2.0:User\"],\"name\":{\"familyName\":\"Saladna\",\"givenName\":\"Clarence\",\"formatted\":\"Clarence Saladna\"},\"userName\":\"csaladna@example.com\",\"emails\":[{\"value\":\"csaladna@example.com\",\"primary\":\"true\",\"type\":\"work\",\"verified\":\"false\"},{\"value\":\"csaladna@example.com\",\"primary\":\"false\",\"type\":\"recovery\",\"verified\":\"false\"}],\"id\":\"a06ff8169b3640a29792a15ece75c906\",\"displayName\":\"Clarence Saladna\",\"urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User\":{\"status\":\"verified\"},\"active\":\"true\",\"password\":\"*********\",\"urn:ietf:params:scim:schemas:oracle:idcs:extension:passwordState:User\":{\"mustChange\":\"true\",\"lastSuccessfulSetDate\":\"2024-01-04T12:57:37.940Z\",\"cantChange\":\"false\",\"expired\":\"false\",\"passwordHistory\":[{\"sequenceNumber\":\"1\",\"value\":\"*********\"}]},\"urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User\":{\"locked\":{\"on\":\"false\"},\"loginAttempts\":\"0\"},\"meta\":{\"created\":\"2024-01-04T12:57:37.951Z\",\"lastModified\":\"2024-01-04T12:57:37.951Z\"},\"idcsCreatedBy\":{\"value\":\"<user-id>\",\"type\":\"User\",\"display\":\"admin opc\"},\"idcsLastModifiedBy\":{\"value\":\"<user-id>\",\"type\":\"User\",\"display\":\"admin opc\"}}",
      "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuditEvent"
      ]
    }
  ],
  "startIndex": 1,
  "itemsPerPage": 50
}

Beispiel für Diagnosebericht

Dies ist ein Beispiel für einen Diagnosebericht.