Antworttext
Die REST-API-Anforderungen für Identitätsdomains geben einen JSON-Antwortbody zurück. Der Statuscode gibt Erfolg oder Misserfolg an.
Unterstützte Antwortcodes
Antworttext für Erfolg
Das Antwortformat für alle REST-API-Anforderungen ist ein JSON-Objekt. Der genaue Inhalt der Antwort hängt vom Inhalt und Typ der Anforderung ab, ob die Anforderung erfolgreich war oder nicht, sowie von einer ausgeführten Abfragefilterung.
Bestimmte Beispiele für Antwortbodys finden Sie auf der Registerkarte Beispiele auf jeder Endpunktseite.
Erfolgreicher POST-Antworttext
Im Folgenden finden Sie eine Beispielantwort, die eine erfolgreiche Erstellung einer User-Ressource mit einer POST-Anforderung angibt:
{
"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-Antworttext 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 für Benutzer mit dem Abfrageparameter: filter=userName sw "d", d.h. Benutzer, 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"
}
Beispiel für eine Antwort auf Validierungsausnahmen
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"
}
}
Beispiel für eine funktionale Ausnahmeantwort
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"
}
}
}
Dynamisches Monitoring mit den HTTP-Headern ECID und RID
Dynamische Überwachung ist der Mechanismus, mit dem HTTP-Anforderungen eindeutig identifiziert und auf diese Weise verfolgt werden können, wenn sie durch das System fließen.
Es bietet auch ein Mittel, mit dem Kontextinformationen zwischen kooperierenden Identitätsdomainkomponenten kommuniziert werden können, die an der Erfüllung von Anforderungen beteiligt sind. Die Ausführungskontext-ID (ECID) und die Beziehungs-ID (RID) sind nützlich, um die Reihenfolge der Ereignisse zwischen Services zu verfolgen.
-
Die ECID: Eine eindeutige ID. Die ECID ist für jede neue Stammaufgabe eindeutig. Diese Zahl bleibt dieselbe wie im Baum der Aufgaben, die mit der Root-Aufgabe verknüpft sind.
-
Die RID: Eine Beziehungs-ID. Die RID ist eine geordnete Gruppe von Zahlen, die den Speicherort jeder Aufgabe im Aufgabenbaum beschreibt. Die führende Zahl ist in der Regel eine Null, und dann erhöhen sich die Zahlen für jede weitere 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 mit Ereignissen stammen, die aus der Identitätsdomain stammen.
Beispielsweise kann der Client diese Werte als Teil einer Fehlermeldung aufnehmen, da es wichtig ist, Ereignisse auf Clientseite mit Fehlern auf Serverseite zu korrelieren. Das Oracle-Standardformat für das Logging umfasst ein Feld, das der ECID zugewiesen ist. Nachdem die ECID bekannt ist, können Sie beim Lesen aus einer Logmeldung auf Fehlerebene alle anderen Logmeldungen finden, die mit dieser Aufgabe verknüpft sind, indem Sie die Logdateien nach Meldungen abfragen, die diese ECID enthalten.
Mit den Diagnosedatenberichten der Identitätsdomain können Sie Loggingdaten anzeigen, die zu Diagnosezwecken erfasst wurden. Sie können die ECID und die RID im Bericht finden und diese IDs dann mit der ECID und der RID korrelieren, 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
-
Eine POST-Anforderung für den Endpunkt
/Users. -
Die cURL-Befehlsheader, die das Ergebnis der Ausführung von POST auf dem Endpunkt
/Userssind. -
Eine Antwort eines GET auf den
/AuditEvents-Endpunkt, die zeigt, dass die ECID mit der ECID identisch ist, die vom Server zum Erstellen des Benutzers verwendet wurde. -
Ein Abschnitt des Diagnoseberichts, der generiert wurde, als die POST-Anforderung am Endpunkt
/Usersausgefü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-Anfrage an /AuditEvents
Hinweis: Dieses Beispiel zeigt, dass die ECID mit der ECID identisch ist, die vom Server zum Erstellen des Benutzers verwendet wurde.
Anforderunghttp://<domainURL>/admin/v1/AuditEvents?filter=actorName sw "adm" and ecId eq "0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K^"
Antwort
{
"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