Duo Security mit Identitätsdomains verwenden

Authentifizierungsfaktoreinstellungen mit Duo-Sicherheitseinstellungen aktualisieren

Im folgenden Beispiel wird gezeigt, wie Sie die Einstellungen für die Multifaktor-Authentifizierung für einen Mandanten aktualisieren, indem Sie eine PUT-Anforderung für die REST-Ressource mit cURL weiterleiten. Weitere Informationen zu cURL finden Sie unter cURL verwenden.

cURL-Befehl

Hinweis

Der Befehl in diesem Beispiel verwendet die URL-Struktur https://<domainURL>/resource-path, wobei <domainURL> die Identity Service-URL und der Ressourcenpfad die Identity Service-API darstellt. Die entsprechende URL-Struktur finden Sie unter Anforderungen senden.
   curl
-X PUT
   -H "Content-Type:application/scim+json"
   -H "Authorization: Bearer <Access Token Value>"
https://<domainURL>/admin/v1/AuthenticationFactorSettings/<ID>

Anforderungsbody

Der folgende Abschnitt enthält ein Beispiel für den Anforderungstext im JSON-Format:
Beispielanforderungsbody
{
  "bypassCodeSettings": {
    "helpDeskCodeExpiryInMins": 60,
    "helpDeskGenerationEnabled": true,
    "helpDeskMaxUsage": 5,
    "length": 12,
    "maxActive": 5,
    "selfServiceGenerationEnabled": true
  },
  "clientAppSettings": {
    "deviceProtectionPolicy": "NONE",
    "initialLockoutPeriodInSecs": 30,
    "keyPairLength": 2048,
    "lockoutEscalationPattern": "Constant",
    "maxFailuresBeforeLockout": 10,
    "maxFailuresBeforeWarning": 5,
    "maxLockoutIntervalInSecs": 86400,
    "minPinLength": 6,
    "policyUpdateFreqInDays": 7,
    "requestSigningAlgo": "SHA256withRSA",
    "sharedSecretEncoding": "Base32",
    "unlockAppForEachRequestEnabled": false,
    "unlockAppIntervalInSecs": 300,
    "unlockOnAppForegroundEnabled": false,
    "unlockOnAppStartEnabled": false
  },
  "compliancePolicy": [
    {
      "action": "Allow",
      "name": "lockScreenRequired",
      "value": "false"
    },
    {
      "action": "Allow",
      "name": "lockScreenRequiredUnknown",
      "value": "false"
    },
    {
      "action": "Allow",
      "name": "jailBrokenDevice",
      "value": "false"
    },
    {
      "action": "Allow",
      "name": "jailBrokenDeviceUnknown",
      "value": "false"
    },
    {
      "action": "Allow",
      "name": "minWindowsVersion",
      "value": "8.1"
    },
    {
      "action": "Allow",
      "name": "minIosVersion",
      "value": "7.1"
    },
    {
      "action": "Allow",
      "name": "minAndroidVersion",
      "value": "4.1"
    },
    {
      "action": "Allow",
      "name": "minIosAppVersion",
      "value": "4.0"
    },
    {
      "action": "Allow",
      "name": "minAndroidAppVersion",
      "value": "8.0"
    },
    {
      "action": "Allow",
      "name": "minWindowsAppVersion",
      "value": "1.0"
    }
  ],
  "endpointRestrictions": {
    "maxEndpointTrustDurationInDays": 15,
    "maxEnrolledDevices": 5,
    "maxTrustedEndpoints": 5,
    "trustedEndpointsEnabled": true,
    "maxIncorrectAttempts": 10
  },
  "id": "AuthenticationFactorSettings",
  "mfaEnrollmentType": "Required",
  "pushEnabled": false,
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorSettings"
  ],
  "thirdPartyFactor": {
        "duoSecurity": true
    },
  "notificationSettings": {
        "pullEnabled": true
    },
     "urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings": {
        "duoSecuritySettings": {
            "integrationKey": "XXXXXXXXXXXXXXXXXXXX",
            "secretKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "apiHostname": "api-example.duosecurity.com",
            "userMappingAttribute": "userName"
    }
    },
  "securityQuestionsEnabled": false,
  "smsEnabled": false,
  "emailEnabled": false,
  "bypassCodeEnabled": false,
  "totpEnabled": false,
  "totpSettings": {
    "hashingAlgorithm": "SHA1",
    "jwtValidityDurationInSecs": 300,
    "keyRefreshIntervalInDays": 60,
    "passcodeLength": 6,
    "smsOtpValidityDurationInMins": 10,
    "smsPasscodeLength": 6,
    "timeStepInSecs": 30,
    "timeStepTolerance": 3,
	"emailOtpValidityDurationInMins": 10,
	"emailPasscodeLength": 6
  },
  "mfaEnabledCategory": "NONE"
}

Antworttext

Das folgende Beispiel zeigt den Inhalt des Antwortbodys im JSON-Format:

Beispielantworttext
{
    "bypassCodeSettings": {
        "helpDeskCodeExpiryInMins": 60,
        "helpDeskGenerationEnabled": true,
        "helpDeskMaxUsage": 5,
        "length": 12,
        "maxActive": 5,
        "selfServiceGenerationEnabled": true
    },
    "clientAppSettings": {
        "deviceProtectionPolicy": "NONE",
        "initialLockoutPeriodInSecs": 30,
        "keyPairLength": 2048,
        "lockoutEscalationPattern": "Constant",
        "maxFailuresBeforeLockout": 10,
        "maxFailuresBeforeWarning": 5,
        "maxLockoutIntervalInSecs": 86400,
        "minPinLength": 6,
        "policyUpdateFreqInDays": 7,
        "requestSigningAlgo": "SHA256withRSA",
        "sharedSecretEncoding": "Base32",
        "unlockAppForEachRequestEnabled": false,
        "unlockAppIntervalInSecs": 300,
        "unlockOnAppForegroundEnabled": false,
        "unlockOnAppStartEnabled": false
    },
    "compliancePolicy": [
        {
            "action": "Allow",
            "name": "lockScreenRequired",
            "value": "false"
        },
        {
            "action": "Allow",
            "name": "lockScreenRequiredUnknown",
            "value": "false"
        },
        {
            "action": "Allow",
            "name": "jailBrokenDevice",
            "value": "false"
        },
        {
            "action": "Allow",
            "name": "jailBrokenDeviceUnknown",
            "value": "false"
        },
        {
            "action": "Allow",
            "name": "minWindowsVersion",
            "value": "8.1"
        },
        {
            "action": "Allow",
            "name": "minIosVersion",
            "value": "7.1"
        },
        {
            "action": "Allow",
            "name": "minAndroidVersion",
            "value": "4.1"
        },
        {
            "action": "Allow",
            "name": "minIosAppVersion",
            "value": "4.0"
        },
        {
            "action": "Allow",
            "name": "minAndroidAppVersion",
            "value": "8.0"
        },
        {
            "action": "Allow",
            "name": "minWindowsAppVersion",
            "value": "1.0"
        }
    ],
    "endpointRestrictions": {
        "maxEndpointTrustDurationInDays": 15,
        "maxEnrolledDevices": 5,
        "maxTrustedEndpoints": 5,
        "trustedEndpointsEnabled": true,
        "maxIncorrectAttempts": 10
    },
    "id": "AuthenticationFactorSettings",
    "mfaEnrollmentType": "Required",
    "pushEnabled": false,
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorSettings"
    ],
    "thirdPartyFactor": {
        "duoSecurity": true
    },
    "notificationSettings": {
        "pullEnabled": true
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings": {
        "duoSecuritySettings": {
            "integrationKey": "XXXXXXXXXXXXXXXXXXXX",
            "secretKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "apiHostname": "api-example.duosecurity.com",
            "userMappingAttribute": "userName"
        }
    },
    "securityQuestionsEnabled": false,
    "smsEnabled": false,
    "emailEnabled": false,
    "bypassCodeEnabled": false,
    "totpEnabled": false,
    "totpSettings": {
        "hashingAlgorithm": "SHA1",
        "jwtValidityDurationInSecs": 300,
        "keyRefreshIntervalInDays": 60,
        "passcodeLength": 6,
        "smsOtpValidityDurationInMins": 10,
        "smsPasscodeLength": 6,
        "timeStepInSecs": 30,
        "timeStepTolerance": 3,
        "emailOtpValidityDurationInMins": 10,
        "emailPasscodeLength": 6
    },
    "meta": {
        "lastModified": "2022-10-15T07:44:53.601Z",
        "resourceType": "AuthenticationFactorSettings",
        "created": "2022-10-04T06:56:10.285Z",
        "location": "https://<domainURL>/admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettings"
    },
    "idcsLastModifiedBy": {
        "value": "5753639d3ca046f094a8f4aeaf9ea5e5",
        "type": "App",
        "display": "testPostman",
        "$ref": "https://<domainURL>/admin/v1/Apps/5753639d3ca046f094a8f4aeaf9ea5e5"
    },
    "idcsCreatedBy": {
        "value": "c480fd39014e40f3bf4f963b3b6a423b",
        "type": "App",
        "display": "idcssm",
        "$ref": "https://<domainURL>/admin/v1/Apps/c480fd39014e40f3bf4f963b3b6a423b"
    },
    "mfaEnabledCategory": "NONE"
}

Duo-Web-SDK aktivieren v4

Duo-Web-SDK v2 (iFrame) ist standardmäßig in einer Identitätsdomain aktiviert. Um Duo Web SDK v4 zu verwenden, müssen Sie es aktivieren.

Verwenden Sie die folgenden Anweisungen, um Duo Web SDK v4 zu aktivieren.

  1. Verwenden von cURL, GET /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettings

    Antwortbeispiel

    Die folgenden Duo-Web-SDK-Einstellungen v2 sollten angezeigt werden.

    "urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings": {
       "duoSecuritySettings": {
          "integrationKey": "<integration-key>",
          "secretKey": "<secret-key>",
          "apiHostname": "api-example.duosecurity.com",
          "userMappingAttribute": "userName"
    }
  2. Sichern Sie Ihre Instanz, falls ein Rollback erforderlich ist.
  3. Aktualisieren Sie die Payload aus Schritt 1, indem Sie enableWebSDKv4 und duoSecurityAuthzRedirectUrl unter dem Abschnitt urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings hinzufügen.

    • enableWebSDKv4: Der Standardwert ist false. Wenn enableWebSDKv4 "false" ist, wird das Duo-Web-SDK v2 verwendet.
    • duoSecurityAuthzRedirectUrl: Der Standardwert ist leer. Fügen Sie hier die URL Ihrer Organisation hinzu. Mit der Umleitungs-URL wird die Duo-Sicherheitsauthentifizierung initiiert, die eine Antwort vom Duo-Sicherheitsserver mit duoSecurityAuthzState und duoSecurityAuthzCode empfängt. Diese URL kann mit der benutzerdefinierten UI überschrieben werden. Die benutzerdefinierte UI muss diesen Endpunkt verwenden, um den Code und Parameter vom Duo Security Server zu empfangen.

    Beachten Sie, dass sich das folgende Attribut von v2 in v4 ändert.

    • client_id (integrationKey in v2)
    • clientSecret (secretKey in v2)
    • apiHostName (keine Änderung von v2)
    • userMappingAttribute (keine Änderung von v2)

    Anforderungsbeispiel

    "urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings": {
       "duoSecuritySettings": {
           "integrationKey": "<integration-key>",
           "secretKey": ""<secret-key>"",
           "apiHostname": "api-6ff7f509.duosecurity.com",
           "userMappingAttribute": "primaryEmail",
           "enableWebSDKv4": true,
           "duoSecurityAuthzRedirectUrl": "https://abc.co/a/c"
       }
    }
  4. Verwenden Sie cURL, PUT /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettings mit Schritt 3-Payload.

Benutzername und Kennwort mit Duo Security als Authentifizierungsfaktor authentifizieren

Dieser Anwendungsfall enthält ein Schritt-für-Schritt-Beispiel für die Verwendung der REST-API für Identitätsdomains zur Authentifizierung von Benutzern sowie zur Registrierung und Authentifizierung mit Multifaktor mit Duo Web SDK v2 oder Duo Web SDK v4.

Hinweis

  • Verwenden Sie diese Authentifizierungs-API nur, wenn Sie Ihre eigene End-to-End-Anmeldeerfahrung erstellen, indem Sie eine benutzerdefinierte Anmeldeanwendung entwickeln, die von Identitätsdomains verwendet werden soll.
  • Diese Authentifizierungs-API kann nicht verwendet werden, um Ihre Anwendungen zu Single Sign-On-Zwecken in Identitätsdomains zu integrieren.
Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

In diesem Anwendungsfall sind die folgenden Beispielsets enthalten:

Neuen Benutzer mit Duo Security mit Web-SDK registrieren v2

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains, um einen neuen Benutzer und ein verknüpftes Gerät bei Duo Web SDK v2 zu registrieren.

Hinweis

  • Verwenden Sie diese Authentifizierungs-API nur, wenn Sie Ihre eigene End-to-End-Anmeldeerfahrung erstellen, indem Sie eine benutzerdefinierte Anmeldeanwendung entwickeln, die von Identitätsdomains verwendet werden soll.
  • Diese Authentifizierungs-API kann nicht verwendet werden, um Ihre Anwendungen zu Single Sign-On-Zwecken in Identitätsdomains zu integrieren.
Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Verwenden Sie die folgenden Schritte für den Anwendungsfall. Jeder Schritt enthält Anforderungs- und Antwortbeispiele:

Hinweis

Bei diesen Schritten wird davon ausgegangen, dass MFA aktiviert ist und eine Anmelde-Policy für MFA erstellt wird. Siehe Multifaktor-Authentifizierungseinstellungen konfigurieren.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "nextAuthFactors": [
        "TOTP",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY",
        "SMS",
        "EMAIL",
        "PUSH"
    ],
    "EnrolledAccountRecoveryFactorsDetails": {
        "EMAIL": {
            "credentials": [
                "accountRecoveryFactor"
            ],
            "enrolledDevices": [
                {
                    "displayName": "clarence.saladna@example.com"
                }
            ]
        },
        "enrolledAccRecFactorsList": [
            "EMAIL"
        ]
    },
    "TOTP": {
        "credentials": [
            "offlineTotp"
        ]
    },
    "SMS": {
        "credentials": [
            "phoneNumber",
            "countryCode"
        ]
    },
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "mfaSettings": {
        "enrollmentRequired": false
    },
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

In diesem Anwendungsfall wird die Anmeldung im nächsten Schritt gesendet, um die Anmeldung für den Benutzer zu initiieren.

Schritt 3: Anmeldungsanforderung für Duo-Sicherheit starten

In diesem Schritt wird die Anmeldung für Duo Security initiiert. Der Client muss die folgenden Attribute enthalten:

  • op: Gibt dem Server an, welche Art von Vorgang der Client wünscht
  • authFactor: Definiert den Authentifizierungsfaktor, für den der Benutzer sich anmelden möchte
  • requestState: in der Schritt-2-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
    "op": "enrollment",
    "authFactor": "DUO_SECURITY",
    "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Anforderung im JSON-Format:

{
   "status": "success",
   "ecId": "4uy3^1k0000000000",
   "DUO_SECURITY": {
      "credentials": [
         "duoSecurityResponse"
      ],
      "authnDetails": {
         "duoSecurityChallenge": "TX
          |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjMwNTM=
          |5853cc561ded98c72426b633a1b1e719401e2345:APP
          |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjYzNTM=
          |37f594101a380ff3902e0a2cb545346ed196bbca",
         "duoSecurityHost": "api-example.duosecurity.com"
      }
   },
   "nextOp": [
       "credSubmit",
       "createToken",
       "createSession",
       "enrollment"
   ],
   "mfaSettings": {
       "enrollmentRequired": false
   },
   "scenario": "ENROLLMENT",
   "requestState": "{{requestState}}"
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt credSubmit gesendet.

Schritt 4: Duo-Sicherheitsauthentifizierung starten

Mit dem Web-SDK v2 von Duo können Sie Identitätsdomains in Duo Security integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert und für die sekundäre Authentifizierung verwendet wird.

Nach der primären Authentifizierung müssen Sie die Authentifizierungsdetails wie duoSecurityHost und duoSecurityChallenge, die Sie von Identitätsdomains erhalten haben, an iFrame übergeben. Sie können das folgende Beispiel verwenden, um die Duo-Sicherheitsauthentifizierung zu initiieren und iFrame zu laden, um eine Verbindung mit dem Duo Security Server herzustellen.

function duo(msg, duoSecurityCallback) {
    Duo.init({iframe: "duo_iframe",
            host: msg.DUO_SECURITY.authnDetails.duoSecurityHost,
            sig_request: msg.DUO_SECURITY.authnDetails.duoSecurityChallenge,
            submit_callback: duoSecurityCallback,
            post_argument: "resp"
    });
}

Nach Abschluss des Duo-Authentifizierungsprozesses ruft Duo die Methode duoSecurityCallback auf, um eine Duo-Antwort zu erhalten.

var duoSecurityCallback = function(details, credentials) {
       var credentials = {};
       credentials.duoSecurityResponse = details.firstElementChild.value;
       operation = "credSubmit";
       initiateAuth(credentials); 
}

Nachdem Sie die Antwort für Duo Security erhalten haben, müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.

Schritt 5: Faktorzugangsdaten weiterleiten

Dieser Schritt leitet die Faktorzugangsdaten in der requestState weiter, die in der Schritt-3-Antwort empfangen wurden. Beachten Sie, dass die Anforderungs-Payload das Attribut authFactor nicht enthält, weil requestState es enthält. Der Client muss die folgenden Attribute enthalten:

  • op: Gibt dem Server an, welche Art von Vorgang der Client wünscht
  • requestState: in der Schritt-3-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format, um die Faktorzugangsdaten weiterzuleiten:

{  
   "op":"credSubmit",
   "credentials": {  
       "duoSecurityResponse": "AUTH
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjM5NjA=
      |f2d0df2a189219a8e85db190ac66fab33be996c3:APP
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1Njc0NTU=
      |a3b7c901e845ebd80451ab670473e983707a8459"
   },
   "requestState":"{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "displayName": "{{username}}'s Duo Security Account",
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

Die nextOp-Werte geben an, was als op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt createToken gesendet.

Schritt 6: Authentifizierungstoken erstellen

Dieser Schritt gibt an, dass der Client fertig ist und eine Session erstellt werden muss. Der Server validiert, dass keine andere Faktorauswertung (je nachdem, was für die Policy definiert ist) erforderlich ist, und antwortet mit dem Token oder verweigert den Zugriff. Der Client muss die folgenden Attribute enthalten:
  • op: Gibt dem Server an, welche Art von Vorgang der Client wünscht
  • requestState: in der Schritt-5-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{  
   "op":"createToken",
   "requestState":"{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{ "authnToken": "{{authnToken}}", "status": "success" }

Neuen Benutzer mit Duo Security mit Web-SDK registrieren v4

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains, um einen neuen Benutzer und ein verknüpftes Gerät bei Duo Web SDK v4 zu registrieren.

Hinweis

Informationen zum Aktivieren des Duo-Web-SDK v4 finden Sie unter Duo-Web-SDK v4 aktivieren.
Hinweis

  • Verwenden Sie diese Authentifizierungs-API nur, wenn Sie Ihre eigene End-to-End-Anmeldeerfahrung erstellen, indem Sie eine benutzerdefinierte Anmeldeanwendung entwickeln, die von Identitätsdomains verwendet werden soll.
  • Diese Authentifizierungs-API kann nicht verwendet werden, um Ihre Anwendungen zu Single Sign-On-Zwecken in Identitätsdomains zu integrieren.
Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Verwenden Sie die folgenden Schritte für den Anwendungsfall. Jeder Schritt enthält Anforderungs- und Antwortbeispiele:

Hinweis

Bei diesen Schritten wird davon ausgegangen, dass MFA aktiviert ist und eine Anmelde-Policy für MFA erstellt wird. Siehe Multifaktor-Authentifizierungseinstellungen konfigurieren.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "nextAuthFactors": [
        "TOTP",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY",
        "SMS",
        "EMAIL",
        "PUSH"
    ],
    "EnrolledAccountRecoveryFactorsDetails": {
        "EMAIL": {
            "credentials": [
                "accountRecoveryFactor"
            ],
            "enrolledDevices": [
                {
                    "displayName": "clarence.saladna@example.com"
                }
            ]
        },
        "enrolledAccRecFactorsList": [
            "EMAIL"
        ]
    },
    "TOTP": {
        "credentials": [
            "offlineTotp"
        ]
    },
    "SMS": {
        "credentials": [
            "phoneNumber",
            "countryCode"
        ]
    },
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "mfaSettings": {
        "enrollmentRequired": false
    },
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

In diesem Anwendungsfall wird die Anmeldung im nächsten Schritt gesendet, um die Anmeldung für den Benutzer zu initiieren.

Schritt 3: Anmeldungsanforderung für Duo-Sicherheit starten

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
    "op": "enrollment",
    "authFactor": "DUO_SECURITY",
    "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Anforderung im JSON-Format.

{
   "status": "success",
   "ecId": "i2tul0R0000000000",
   "nextAuthFactors": [
      "DUO_SECURITY"
   ],
   "DUO_SECURITY": {
      "credentials": [
         "duoSecurityAuthzCode",
         "duoSecurityAuthzState"
      ],
      "authnDetails": {
         "duoSecurityAuthzRequest": "https://api-xxxxxxxx.duosecurity.com/oauth/v1/authorize?response_type=code&client_id=<client_id>&redirect_uri=duoSecurityAuthzRedirectURL&state=3047103d-d707-4b94-a960-203430071154&request=<request>"
      }
   },
   "nextOp": [
      "credSubmit",
      "getBackupFactors"
   ],
   "scenario": "AUTHENTICATION",
   "requestState": "requestState",
   "trustedDeviceSettings": {
      "trustDurationInDays": 15
   }
}

Schritt 4: Duo-Sicherheitsauthentifizierung starten

Während der Duo Security-Authentifizierung leitet der Browser zum Duo Security Server um. Der Duo Security Server lädt dann die sekundäre Authentifizierungsseite, auf der der Benutzer die sekundäre Authentifizierung durchführt. Nach erfolgreicher Authentifizierung antwortet der Duo Security Server mit den Parametern "state" (duoSecurityAuthzState) und "code" (duoSecurityAuthzCode). Diese Parameter müssen an die Identitätsdomain weitergeleitet werden, um die Authentifizierung abzuschließen.

Gehen Sie folgendermaßen vor, um die Status- und Codeparameter abzurufen:

  1. Rufen Sie die URL ab, zu der Sie von duoSecurityAuthzRequest umleiten möchten.

    Beispiel:
    "duoSecurityAuthzRequest": "https://api-xxxxxxxx.duosecurity.com/oauth/v1/authorize?response_type=code&client_id=<client_id>&redirect_uri=duoSecurityAuthzRedirectURL&state=3047103d-d707-4b94-a960-203430071154&request=<request>"

    Die Umleitungs-URL für duoSecurityAuthzRedirectURL.

  2. 303 Umleitung zum Duo Security Server.

  3. Schließen Sie den Anmelde- und Authentifizierungsprozess für Duo Security ab.

    Der Duo Security Server leitet mit duoSecurityAuthzState und duoSecurityAuthzCode zurück zu duoSecurityAuthzRedirectURL.

Schritt 5: Faktorzugangsdaten weiterleiten

Um die Authentifizierung abzuschließen, übergeben Sie duoSecurityAuthzState und duoSecurityAuthzCode aus der Antwort an die Identitätsdomain.

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der Anforderung im JSON-Format:

{
    "op": "credSubmit",
    "credentials":
   {
      "duoSecurityAuthzCode": "<duo-security-authz-code>",
      "duoSecurityAuthzState": "<duo-security-authz-state>"
   }
,
    "requestState": "requestState"}'

Antwortbeispiel

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "displayName": "{{username}}'s Duo Security Account",
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

Schritt 6: Authentifizierungstoken erstellen

Dieser Schritt gibt an, dass der Client fertig ist und eine Session erstellt werden muss. Der Server validiert, dass keine andere Faktorauswertung (je nachdem, was für die Policy definiert ist) erforderlich ist, und antwortet mit dem Token oder verweigert den Zugriff. Der Client muss die folgenden Attribute enthalten:
  • op: Gibt dem Server an, welche Art von Vorgang der Client wünscht
  • requestState: in der Schritt-5-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{  
   "op":"createToken",
   "requestState":"{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{ "authnToken": "{{authnToken}}", "status": "success" }

Benutzeraccount mit Duo Security mit Web-SDK v2 authentifizieren

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der Authentifizierungs-API für Identitätsdomains zur Authentifizierung eines Benutzeraccounts mit dem Duo Web SDK v2.

Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.
Verwenden Sie die folgenden Schritte für den Anwendungsfall. Jeder Schritt enthält Anforderungs- und Antwortbeispiele:
Hinweis

Bei diesen Schritten wird davon ausgegangen, dass MFA aktiviert ist und eine Anmelde-Policy für MFA erstellt wird. Siehe Multifaktor-Authentifizierungseinstellungen konfigurieren

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "nextAuthFactors": [
        "TOTP",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY",
        "SMS",
        "EMAIL",
        "PUSH"
    ],
    "EnrolledAccountRecoveryFactorsDetails": {
        "EMAIL": {
            "credentials": [
                "accountRecoveryFactor"
            ],
            "enrolledDevices": [
                {
                    "displayName": "clarence.saladna@example.com"
                }
            ]
        },
        "enrolledAccRecFactorsList": [
            "EMAIL"
        ]
    },
    "TOTP": {
        "credentials": [
            "offlineTotp"
        ]
    },
    "SMS": {
        "credentials": [
            "phoneNumber",
            "countryCode"
        ]
    },
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "mfaSettings": {
        "enrollmentRequired": false
    },
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt credSubmit gesendet.

Schritt 3: Duo-Sicherheitsauthentifizierung starten

Mit dem Web-SDK v2 von Duo können Sie Identitätsdomains in Duo Security integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert und für die sekundäre Authentifizierung verwendet wird.

Nach der primären Authentifizierung müssen Sie die Authentifizierungsdetails wie duoSecurityHost und duoSecurityChallenge, die Sie von Identitätsdomains erhalten haben, an iFrame übergeben. Sie können das folgende Beispiel verwenden, um die Duo-Sicherheitsauthentifizierung zu initiieren und iFrame zu laden, um eine Verbindung mit dem Duo Security Server herzustellen.

function duo(msg, duoSecurityCallback) {
    Duo.init({iframe: "duo_iframe",
            host: msg.DUO_SECURITY.authnDetails.duoSecurityHost,
            sig_request: msg.DUO_SECURITY.authnDetails.duoSecurityChallenge,
            submit_callback: duoSecurityCallback,
            post_argument: "resp"
    });
}

Nach Abschluss des Duo-Authentifizierungsprozesses ruft Duo die Methode duoSecurityCallback auf, um eine Duo-Antwort zu erhalten.

var duoSecurityCallback = function(details, credentials) {
       var credentials = {};
       credentials.duoSecurityResponse = details.firstElementChild.value;
       operation = "credSubmit";
       initiateAuth(credentials); 
}

Nachdem Sie die Antwort für Duo Security erhalten haben, müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.

Schritt 4: Faktorzugangsdaten weiterleiten

Dieser Schritt leitet die Faktorzugangsdaten in der requestState weiter, die in der Schritt-2-Antwort empfangen wurden. Beachten Sie, dass die Anforderungs-Payload das Attribut authFactor nicht enthält, weil requestState es enthält. Der Client muss die folgenden Attribute enthalten:

  • op: Gibt dem Server an, welche Art von Vorgang der Client wünscht
  • requestState: in der Schritt-2-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format, um die Faktorzugangsdaten weiterzuleiten:

{  
   "op":"credSubmit",
   "credentials": {  
       "duoSecurityResponse": "AUTH
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjM5NjA=
      |f2d0df2a189219a8e85db190ac66fab33be996c3:APP
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1Njc0NTU=
      |a3b7c901e845ebd80451ab670473e983707a8459"
   },
   "requestState":"{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "authnToken": "{{authnToken}}",
    "status": "success",
    "ecId": "5MyZ41m0000000000"
}

Benutzeraccount mit Duo Security mit Web-SDK v4 authentifizieren

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der Authentifizierungs-API für Identitätsdomains zur Authentifizierung eines Benutzeraccounts mit dem Duo Web SDK v4.

Hinweis

Informationen zum Aktivieren des Duo-Web-SDK v4 finden Sie unter Duo-Web-SDK v4 aktivieren.
Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.
Verwenden Sie die folgenden Schritte für den Anwendungsfall. Jeder Schritt enthält Anforderungs- und Antwortbeispiele:
Hinweis

Bei diesen Schritten wird davon ausgegangen, dass MFA aktiviert ist und eine Anmelde-Policy für MFA erstellt wird. Siehe Multifaktor-Authentifizierungseinstellungen konfigurieren.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "nextAuthFactors": [
        "TOTP",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY",
        "SMS",
        "EMAIL",
        "PUSH"
    ],
    "EnrolledAccountRecoveryFactorsDetails": {
        "EMAIL": {
            "credentials": [
                "accountRecoveryFactor"
            ],
            "enrolledDevices": [
                {
                    "displayName": "clarence.saladna@example.com"
                }
            ]
        },
        "enrolledAccRecFactorsList": [
            "EMAIL"
        ]
    },
    "TOTP": {
        "credentials": [
            "offlineTotp"
        ]
    },
    "SMS": {
        "credentials": [
            "phoneNumber",
            "countryCode"
        ]
    },
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "mfaSettings": {
        "enrollmentRequired": false
    },
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt credSubmit gesendet.

Schritt 3: Duo-Sicherheitsauthentifizierung starten

Während der Duo Security-Authentifizierung leitet der Browser zum Duo Security Server um. Der Duo Security Server lädt dann die sekundäre Authentifizierungsseite, auf der der Benutzer die sekundäre Authentifizierung durchführt. Nach erfolgreicher Authentifizierung antwortet der Duo Security Server mit den Parametern "state" (duoSecurityAuthzState) und "code" (duoSecurityAuthzCode). Diese Parameter müssen an die Identitätsdomain weitergeleitet werden, um die Authentifizierung abzuschließen.

Gehen Sie folgendermaßen vor, um die Status- und Codeparameter abzurufen:

  1. Rufen Sie die URL ab, zu der Sie von duoSecurityAuthzRequest umleiten möchten.

    Beispiel:
    "duoSecurityAuthzRequest": "https://api-xxxxxxxx.duosecurity.com/oauth/v1/authorize?response_type=code&client_id=<client_id>&redirect_uri=duoSecurityAuthzRedirectURL&state=3047103d-d707-4b94-a960-203430071154&request=<request>"

    Die Umleitungs-URL für duoSecurityAuthzRedirectURL.

  2. 303 Umleitung zum Duo Security Server.

  3. Schließen Sie den Anmelde- und Authentifizierungsprozess für Duo Security ab.

    Der Duo Security Server leitet mit duoSecurityAuthzState und duoSecurityAuthzCode zurück zu duoSecurityAuthzRedirectURL.

Schritt 4: Faktorzugangsdaten weiterleiten

Um die Authentifizierung abzuschließen, übergeben Sie duoSecurityAuthzState und duoSecurityAuthzCode aus der Antwort an die Identitätsdomain.

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der Anforderung im JSON-Format:

{
    "op": "credSubmit",
    "credentials":
   {
      "duoSecurityAuthzCode": "<duo-security-authz-code>",
      "duoSecurityAuthzState": "<duo-security-authz-state>"
   }
,
    "requestState": "requestState"}'

Antwortbeispiel

{
    "authnToken": "{{authnToken}}",
    "status": "success",
    "ecId": "5MyZ41m0000000000"
}

Benutzer mit Duo-Sicherheit authentifizieren, wenn sie als Backupfaktor verwendet werden

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains zur Authentifizierung eines Benutzeraccounts bei Duo Security, selbst wenn er als Backupfaktor konfiguriert ist.

Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "4uy3^1k0000000000",
    "nextAuthFactors": [
        "TOTP",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY",
        "SMS",
        "EMAIL",
        "PUSH"
    ],
    "EnrolledAccountRecoveryFactorsDetails": {
        "EMAIL": {
            "credentials": [
                "accountRecoveryFactor"
            ],
            "enrolledDevices": [
                {
                    "displayName": "clarence.saladna@example.com"
                }
            ]
        },
        "enrolledAccRecFactorsList": [
            "EMAIL"
        ]
    },
    "TOTP": {
        "credentials": [
            "offlineTotp"
        ]
    },
    "SMS": {
        "credentials": [
            "phoneNumber",
            "countryCode"
        ]
    },
    "nextOp": [
        "createToken",
        "createSession",
        "enrollment"
    ],
    "mfaSettings": {
        "enrollmentRequired": false
    },
    "scenario": "ENROLLMENT",
    "requestState": "{{requestState}}"
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt getBackupFactors gesendet.

Schritt 3: Liste der Backupfaktoren abrufen

In diesem Schritt können Sie die Liste der Backupfaktoren abrufen.

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
    "op": "getBackupFactors",
    "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "5MyZ41p0000000000",
    "nextAuthFactors": [
        "EMAIL",
        "BYPASSCODE",
        "SECURITY_QUESTIONS",
        "DUO_SECURITY"
    ],
    "EMAIL": {
        "credentials": [
            "preferred",
            "deviceId"
        ],
        "enrolledDevices": [
            {
                "deviceId": "790ed820aee048a78de17ebe1ebddb19",
                "displayName": "ashXXXXX@oracle.com"
            }
        ]
    },
    "BYPASSCODE": {
        "credentials": [
            "bypassCode"
        ]
    },
    "SECURITY_QUESTIONS": {
        "credentials": [
            "questionId",
            "answer"
        ],
        "questions": [
            {
                "questionId": "FirstCar",
                "text": "What's the model of your first car?"
            }
        ],
        "preferred": true
    },
    "DUO_SECURITY": {
        "enrolledDevices": [
            {
                "deviceId": "3053eed6249a4dd4835c51bf873c5f85",
                "displayName": "jarvis's Duo Security Account"
            }
        ]
    },
    "nextOp": [
        "credSubmit",
        "getBackupFactors"
    ],
    "scenario": "AUTHENTICATION",
    "requestState": "{{requestState}}",
    "trustedDeviceSettings": {
        "trustDurationInDays": 15
    }
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 4: Wählen Sie Duo Security aus der Liste der Backup-Faktoren

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:
  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
    "op": "credSubmit",
    "authFactor": "DUO_SECURITY",
    "credentials": {
        "deviceId": "3053eed6249a4dd4835c51bf873c5f85"
    },
    "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
	"status": "success",
	"ecId": "5MyZ41q0000000000",
	"DUO_SECURITY": {
	"credentials": [
		 "duoSecurityResponse"
	],
	"authnDetails": {
		"duoSecurityChallenge": "TX
			 |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjQ1NDg=
			 |230d8328f53ec537ecd033fbb175fbce65930c3e:APP
			 |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1Njc4NDg=
			 |af94d927d3e027141177e8f88baa19f6427502ee",
		   "duoSecurityHost": "api-example.duosecurity.com"
		}
	},
	"nextOp": [
		"credSubmit",
	       "getBackupFactors"
	],
	"scenario": "AUTHENTICATION",
	"requestState": "{{requestState}}",
	"trustedDeviceSettings": {
		"trustDurationInDays": 15
	}
}

Duo Security als bevorzugten Faktor festlegen

Dieser Anwendungsfall enthält ein Schritt-für-Schritt-Beispiel für die Verwendung der REST-API für Identitätsdomains, um Duo Security als bevorzugten Faktor für die Authentifizierung festzulegen.

Sie können das Kennzeichen preferred auf true setzen, um Duo Security als bevorzugten Faktor zu definieren, wenn ein Benutzer bereits einen anderen Faktor als Duo Security hat.

Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials: Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
   "status": "success",
   "ecId": "g5CAF1i1000000000",
   "nextAuthFactors": [
      "DUO_SECURITY"
    ],
    "DUO_SECURITY": {
      "credentials": [
         "duoSecurityResponse"
      ],
      "authnDetails": {
         "duoSecurityChallenge": "TX
            |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjM2Njc=
            |73894f83e7ee87c81388f84b4c0015cb86c6fd0b:APP
            |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjY5Njc=
            |11f57d2ad044abee78d3290fdff69af7c3d22d71",
         "duoSecurityHost": "api-example.duosecurity.com"
      }
    },
   "nextOp": [
      "credSubmit",
      "getBackupFactors"
    ],
    "scenario": "AUTHENTICATION",
    "requestState": "{{requestState}}",
    "trustedDeviceSettings": {
      "trustDurationInDays": 15
    }
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt credSubmit gesendet.

Schritt 3: Duo-Sicherheitsauthentifizierung starten

Mit dem Web-SDK v2 von Duo können Sie Identitätsdomains in Duo Security integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert und für die sekundäre Authentifizierung verwendet wird.

Nach der primären Authentifizierung müssen Sie die Authentifizierungsdetails wie duoSecurityHost und duoSecurityChallenge, die Sie von Identitätsdomains erhalten haben, an iFrame übergeben. Sie können das folgende Beispiel verwenden, um die Duo-Sicherheitsauthentifizierung zu initiieren und iFrame zu laden, um eine Verbindung mit dem Duo Security Server herzustellen.

function duo(msg, duoSecurityCallback) {
    Duo.init({iframe: "duo_iframe",
            host: msg.DUO_SECURITY.authnDetails.duoSecurityHost,
            sig_request: msg.DUO_SECURITY.authnDetails.duoSecurityChallenge,
            submit_callback: duoSecurityCallback,
            post_argument: "resp"
    });
}

Nach Abschluss des Duo-Authentifizierungsprozesses ruft Duo die Methode duoSecurityCallback auf, um eine Duo-Antwort zu erhalten.

var duoSecurityCallback = function(details, credentials) {
       var credentials = {};
       credentials.duoSecurityResponse = details.firstElementChild.value;
       operation = "credSubmit";
       initiateAuth(credentials); 
}

Nachdem Sie die Antwort für Duo Security erhalten haben, müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.

Schritt 4: Aktivieren Sie Duo Security als bevorzugten Faktor

Dieser Schritt ermöglicht Duo Security als bevorzugten Faktor. Für diesen Schritt muss der Client die folgenden Attribute enthalten:
  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
  "op": "credSubmit",
  "credentials": {
    "duoSecurityResponse": "AUTH
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjQzMzg=
      |4a40cc9c79d4a65b48d0f9b871d7a4e83481b3ca:APP
      |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1Njc4NDg=
      |af94d927d3e027141177e8f88baa19f6427502ee",
    "preferred": true
 },
 "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "authnToken": "{{authnToken}}",
    "status": "success",
    "ecId": "5MyZ41r0000000000"
}

Unterstützung vertrauenswürdiger Geräte bei der Verwendung von Duo als Authentifizierungsfaktor

Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains zur Unterstützung vertrauenswürdiger Geräte bei der Verwendung von Duo als Authentifizierungsfaktor.

Tipp

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-authn-api-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Schritt 1: Authentifizierungsablauf starten

Rufen Sie die erste requestState ab, um den Authentifizierungsfluss zu starten.

Anforderungsbeispiel

Das folgende Beispiel zeigt die Anforderung im cURL-Format:

   curl  -X GET
   -H "Content-Type: application/json" 
   -H "Authorization: Bearer {{access_token_value}}"
   https://<domainURL>/sso/v1/sdk/authenticate?appName={{app_name}}
Hinweis

Die appName ist optional. appName ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName angegeben wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird für die erforderlichen Faktoren auf Basis dieser Policy herausgefordert.

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "status": "success",
    "ecId": "ecId",
 "nextOp": [
        "credSubmit"
    ],
    "nextAuthFactors": [
        "USERNAME_PASSWORD"
    ],
    "USERNAME_PASSWORD": {
        "credentials": [
            "username",
            "example-password"
        ]
    },
    "requestState": "{{requestState}}"
}

In der Antwort gibt der Wert nextOp an, was als Wert op in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfallbeispiel sollte credSubmit im nächsten Schritt gesendet werden. Die requestState enthält kontextbezogene Daten, die zur Verarbeitung der Anforderung erforderlich sind.

Schritt 2: Zugangsdaten des Benutzers weiterleiten

Leiten Sie die Zugangsdaten des Benutzers als ersten Faktor weiter. Dabei handelt es sich um den Benutzernamen und das Kennwort. Für diesen Schritt muss der Client die folgenden Attribute enthalten:

  • credentials:-Benutzername und Kennwort

  • requestState: in der Schritt-1-Antwort empfangen

  • op: teilt dem Server mit, welche Art von Vorgang der Client wünscht

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
      "username": "{{username}}",
      "password": "{{password}}"
   },
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
   "status": "success",
   "ecId": "g5CAF1i1000000000",
   "nextAuthFactors": [
      "DUO_SECURITY"
    ],
    "DUO_SECURITY": {
      "credentials": [
         "duoSecurityResponse"
      ],
      "authnDetails": {
         "duoSecurityChallenge": "TX
            |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjM2Njc=
            |73894f83e7ee87c81388f84b4c0015cb86c6fd0b:APP
            |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjY5Njc=
            |11f57d2ad044abee78d3290fdff69af7c3d22d71",
         "duoSecurityHost": "api-example.duosecurity.com"
      }
    },
   "nextOp": [
      "credSubmit",
      "getBackupFactors"
    ],
    "scenario": "AUTHENTICATION",
    "requestState": "{{requestState}}",
    "trustedDeviceSettings": {
      "trustDurationInDays": 15
    }
}

In der Antwort geben die nextOp-Werte an, was als Op-Wert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsfall wird im nächsten Schritt credSubmit gesendet.

Schritt 3: Duo-Sicherheitsauthentifizierung starten

Mit dem Web-SDK v2 von Duo können Sie Identitätsdomains in Duo Security integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert und für die sekundäre Authentifizierung verwendet wird.

Nach der primären Authentifizierung müssen Sie die Authentifizierungsdetails wie duoSecurityHost und duoSecurityChallenge, die Sie von Identitätsdomains erhalten haben, an iFrame übergeben. Sie können das folgende Beispiel verwenden, um die Duo-Sicherheitsauthentifizierung zu initiieren und iFrame zu laden, um eine Verbindung mit dem Duo Security Server herzustellen.

function duo(msg, duoSecurityCallback) {
    Duo.init({iframe: "duo_iframe",
            host: msg.DUO_SECURITY.authnDetails.duoSecurityHost,
            sig_request: msg.DUO_SECURITY.authnDetails.duoSecurityChallenge,
            submit_callback: duoSecurityCallback,
            post_argument: "resp"
    });
}

Nach Abschluss des Duo-Authentifizierungsprozesses ruft Duo die Methode duoSecurityCallback auf, um eine Duo-Antwort zu erhalten.

var duoSecurityCallback = function(details, credentials) {
       var credentials = {};
       credentials.duoSecurityResponse = details.firstElementChild.value;
       operation = "credSubmit";
       initiateAuth(credentials); 
}

Nachdem Sie die Antwort für Duo Security erhalten haben, müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.

Schritt 4: Aktivieren Sie ein Gerät als vertrauenswürdig

Dieser Schritt aktiviert ein Gerät als vertrauenswürdig. Nachdem das Gerät vertrauenswürdig ist, wird MFA nicht herausgefordert, obwohl Duo Security registriert ist.

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
   "op": "credSubmit",
   "credentials": {
       "duoSecurityResponse": "AUTH
         |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjQ2MDY=
         |ba16e2eb734e00d9ebe6f8129ce32669437052e9:APP
         |amFydmlzfERJNThZNFhVMlFXWEVSUDQzVTRKfDE1NjE1NjgwNjc=
         |ba4f415559ff2c30b23a912a18ee5f717a398563"
   },
   "trustedDevice": true,
   "trustedDeviceDisplayName": "Postman on Windows",
   "requestState": "{{requestState}}"
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "authnToken": "{{authnToken}}",
    "trustToken": "{{trustToken}}",
    "status": "success",
    "ecId": "5MyZ41u0000000000"
}

Mit Selfservice bei MFA mit Duo Security registrieren

Dieser Anwendungsfall enthält ein Schritt-für-Schritt-Beispiel für die Verwendung der REST-API für Identitätsdomains für die Selfservice-Registrierung bei der Multifaktor-Authentifizierung (MFA) mit Duo Security.

Laden Sie die Anwendungsbeispiele für die Identitätsdomainauthentifizierung und die globale Variablendatei aus dem Ordner idcs-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.

Als obligatorischer Schritt müssen Sie ein ME-Token erhalten, bevor Sie diese Schritte ausführen. Informationen zum Abrufen eines ME-Tokens finden Sie unter Zugriffstoken mit Authentifizierungs-API generieren.

Hinweis

Bei diesen Schritten wird davon ausgegangen, dass relevante Faktoren von MFA mit Multifactor-Authentifizierungseinstellungen konfigurieren aktiviert werden.

Step1: Benutzer mit Duo-Faktor registrieren

Dieser Schritt initiiert die Registrierung von Duo Security in einer POST-Anforderung an den Endpunkt /admin/v1/MyAuthenticationFactorEnroller. Der Client muss das folgende Attribut enthalten:
  • value: Definiert die Benutzer-ID. Sie können einen GET-Aufruf an {{HOST}}/admin/v1/Me durchführen, um den Wert "id" abzurufen.

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt des POST-Anforderungsbodys im JSON-Format:

{
   "authnFactors":["THIRDPARTY"],
   "thirdPartyFactor": {
       "thirdPartyVendorName" : "DUO_SECURITY",
       "thirdPartyFactorType" : "None"
   },
   "user": {
      "value" : "012832e2e63d4bfda5bc512f2b52ccbe"
    },
   "schemas": [
       "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
   ]
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt des Antwortbodys im JSON-Format:

{
    "authnFactors": [
        "THIRDPARTY"
    ],
    "thirdPartyFactor": {
        "thirdPartyFactorId": "1c3a069c240b4a9d9e6e90b9a2be8bed",
        "thirdPartyFactorType": "None",
        "thirdPartyVendorName": "DUO_SECURITY"
    },
    "user": {
        "value": "6852e4e2bc864b3b912d7bd48f9f4879",
        "$ref": "https://<domainURL>admin/v1/Users/6852e4e2bc864b3b912d7bd48f9f4879"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
    ],
    "meta": {
        "resourceType": "MyAuthenticationFactorEnroller",
        "location": "https://<domainURL>admin/v1/MyAuthenticationFactorEnroller"
    },
    "displayName": "test's Phone",
    "requestId": "fe520538-0da6-45a3-b23f-1256091e3f0c",
    "deviceId": "ca0ba497327c45d2a4a408301c78682b"
}

In der Antwort müssen deviceId und requestId im nächsten Schritt übergeben werden.

Schritt 2: Duo-Authentifizierung für den Benutzer starten

Dieser Schritt initiiert die Authentifizierung auf der Drittseite, indem eine POST-Anforderung an den Endpunkt /admin/v1/MyAuthenticationFactorInitiator weitergeleitet wird. Der Client muss die folgenden Attribute enthalten:

  • requestId: in der Schritt-1-Antwort empfangen
  • deviceId: in der Schritt-1-Antwort empfangen
  • userName: Benutzername des Benutzers

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt des POST-Anforderungsbodys im JSON-Format:

{
    "requestId": "1e513691-9a41-4418-a0f0-f96e6f4c5735",
    "deviceId": "14a2a6f2f41b4c10acc9a6d4b54ffe4a",
    "authFactor": "THIRDPARTY",
    "thirdPartyFactor": {
        "thirdPartyFactorId": "7ed55e203ac7435eb6b4847dcfca28e0",
        "thirdPartyFactorType": "None",
        "thirdPartyVendorName": "DUO_SECURITY"
    },
    "userName": "testuser1",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
    ]
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "requestId": "fe520538-0da6-45a3-b23f-1256091e3f0c",
    "deviceId": "ca0ba497327c45d2a4a408301c78682b",
    "authFactor": "THIRDPARTY",
    "thirdPartyFactor": {
        "thirdPartyFactorId": "1c3a069c240b4a9d9e6e90b9a2be8bed",
        "thirdPartyFactorType": "None",
        "thirdPartyVendorName": "DUO_SECURITY"
    },
    "userName": "testuser1",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
    ],
    "meta": {
        "resourceType": "MyAuthenticationFactorInitiator",
        "location": "https://<domainURL>admin/v1/MyAuthenticationFactorInitiator"
    },
    "additionalAttributes": [
        {
            "name": "duoHost",
            "value": "api-0095dc4a.duosecurity.com"
        },
        {
            "name": "duoChallenge",
            "value": "TX
               |Njg1MmU0ZTJiYzg2NGIzYjkxMmQ3YmQ0OGY5ZjQ4Nzl8RElFWldUV0VMVUJYSEQ2RExKM1V8MTU0MDMyMDkz==
               |8a0b6f0472b1c03357e9d6b3348d0a341c96e6a0:APP
               |Njg1MmU0ZTJiYzg2NGIzYjkxMmQ3YmQ0OGY5ZjQ 4Nzl8RElFWldUV0VMVUJYSEQ2RExKM1V8MTU0MDMyNDIzNA==
               |5d45c215e6e5af7d866df480087d825aa1cf4279"
        }
    ]
}

In der Antwort müssen deviceId und requestId im nächsten Schritt übergeben werden.

Schritt 3: Duo-Faktor für Anmeldungsszenario validieren

In diesem Schritt wird die Drittanbieterfaktor-API mit erfassten Zugangsdaten aufgerufen, um die Registrierung eines Benutzers in einer POST-Anforderung an den Endpunkt /admin/v1/MyAuthenticationFactorValidator zu validieren.

Der Client muss die folgenden Attribute enthalten:

  • requestId: in der Schritt-2-Antwort empfangen
  • deviceId: in der Schritt-2-Antwort empfangen

Anforderungsbeispiel

Das folgende Beispiel zeigt den Inhalt der POST-Anforderung im JSON-Format:

{
    "requestId": "1e513691-9a41-4418-a0f0-f96e6f4c5735",
    "deviceId": "14a2a6f2f41b4c10acc9a6d4b54ffe4a",
    "authFactor": "THIRDPARTY",
    "thirdPartyFactor": {
        "thirdPartyFactorId": "7ed55e203ac7435eb6b4847dcfca28e0",
        "thirdPartyFactorType": "None",
        "thirdPartyVendorName": "DUO_SECURITY"
    },
    "scenario": "ENROLLMENT",
    "username": "testuser1",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
    ],
    "additionalAttributes": [
        {
            "name": "duoResponse",
            "value": "AUTH|YWJoaXNoZWsuanVsa2FAb3JhY2xlLmNvbXxESUVaV1RXRUxVQlhIRDZETEozVXwxNTM5ODMwNDc2|9439adbea1b90a90c9169f366cc028aabde8ac51:APP|YWJoaXNoZWsuanVsa2FAb3JhY2xlLmNvbXxESUVaV1RXRUxVQlhIRDZETEozVXwxNTM5ODMzODYx|94bcc9a0c4ab6da617827432d021171d3b393fd3"
        }
    ]
}

Antwortbeispiel

Das folgende Beispiel zeigt den Inhalt der Antwort im JSON-Format:

{
    "requestId": "fe520538-0da6-45a3-b23f-1256091e3f0c",
    "deviceId": "ca0ba497327c45d2a4a408301c78682b",
    "authFactor": "THIRDPARTY",
    "thirdPartyFactor": {
        "thirdPartyFactorId": "1c3a069c240b4a9d9e6e90b9a2be8bed",
        "thirdPartyFactorType": "None",
        "thirdPartyVendorName": "DUO_SECURITY"
    },
    "scenario": "ENROLLMENT",
    "userName": "testuser1",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
    ],
    "meta": {
        "resourceType": "MyAuthenticationFactorValidator",
        "location": "https://<domainURL>admin/v1/MyAuthenticationFactorValidator"
    },
    "status": "SUCCESS",
    "displayName": "test's Phone",
    "mfaStatus": "ENROLLED",
    "mfaPreferredDevice": "0d37a1334bdf4c9ca80474dcadba8d10",
    "mfaPreferredAuthenticationFactor": "THIRDPARTY",
    "mfaPreferredThirdPartyFactorType": "None",
    "securityQuestionsPresent": false,
    "devicesCount": 1,
    "emailFactorEnrolled": false
}

In der Antwort gibt das Attribut mfaStatus:"ENROLLED" an, dass sich der Benutzer für MFA registriert hat. Das Attribut mfaPreferredAuthenticationFactor gibt den Faktor an, der als bevorzugte Methode festgelegt wurde. In diesem Fall ist es THIRDPARTY.