Duo Security mit Identitätsdomains verwenden
Diese Anwendungsfälle enthalten ein schrittweises Beispiel für die Verwendung von Duo Web SDK v2 oder Duo Web SDK v4 mit einer Identitätsdomain.
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
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
{
"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:
{
"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.
-
Verwenden von cURL,
GET /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettingsAntwortbeispiel
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" } - Sichern Sie Ihre Instanz, falls ein Rollback erforderlich ist.
-
Aktualisieren Sie die Payload aus Schritt 1, indem Sie
enableWebSDKv4undduoSecurityAuthzRedirectUrlunter dem Abschnitturn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettingshinzufügen.enableWebSDKv4: Der Standardwert istfalse. WennenableWebSDKv4"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 mitduoSecurityAuthzStateundduoSecurityAuthzCodeempfä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(integrationKeyin v2)clientSecret(secretKeyin 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" } } -
Verwenden Sie cURL,
PUT /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettingsmit 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.
- 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.
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:
-
Benutzeraccount mit Duo Security mit Web-SDK v2 authentifizieren
-
Benutzeraccount mit Duo Security mit Web-SDK v4 authentifizieren
-
Benutzer mit Duo-Sicherheit authentifizieren, wenn sie als Backupfaktor verwendet werden
-
Unterstützung vertrauenswürdiger Geräte bei der Verwendung von Duo als Authentifizierungsfaktor
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.
- 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.
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:
- Schritt 1: Authentifizierungsablauf starten
- Schritt 2: Zugangsdaten des Benutzers weiterleiten
- Schritt 3: Anmeldungsanforderung für Duo-Sicherheit starten
- Schritt 4: Duo-Sicherheitsauthentifizierung starten
- Schritt 5: Faktorzugangsdaten weiterleiten
- Schritt 6: Authentifizierungstoken erstellen
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}}
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ünschtauthFactor: Definiert den Authentifizierungsfaktor, für den der Benutzer sich anmelden möchterequestState: 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ünschtrequestState: 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
op: Gibt dem Server an, welche Art von Vorgang der Client wünschtrequestState: 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.
- 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.
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:
- Schritt 1: Authentifizierungsablauf starten
- Schritt 2: Zugangsdaten des Benutzers weiterleiten
- Schritt 3: Anmeldungsanforderung für Duo-Sicherheit starten
- Schritt 4: Duo-Sicherheitsauthentifizierung starten
- Schritt 5: Faktorzugangsdaten weiterleiten
- Schritt 6: Authentifizierungstoken erstellen
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}}
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:
-
Rufen Sie die URL ab, zu der Sie von
duoSecurityAuthzRequestumleiten 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. -
303 Umleitung zum Duo Security Server.
-
Schließen Sie den Anmelde- und Authentifizierungsprozess für Duo Security ab.
Der Duo Security Server leitet mit
duoSecurityAuthzStateundduoSecurityAuthzCodezurück zuduoSecurityAuthzRedirectURL.
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
op: Gibt dem Server an, welche Art von Vorgang der Client wünschtrequestState: 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.
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.
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}}
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ünschtrequestState: 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.
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.
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}}
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:
-
Rufen Sie die URL ab, zu der Sie von
duoSecurityAuthzRequestumleiten 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. -
303 Umleitung zum Duo Security Server.
-
Schließen Sie den Anmelde- und Authentifizierungsprozess für Duo Security ab.
Der Duo Security Server leitet mit
duoSecurityAuthzStateundduoSecurityAuthzCodezurück zuduoSecurityAuthzRedirectURL.
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.
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}}
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
-
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.
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}}
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
-
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.
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}}
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.
Bei diesen Schritten wird davon ausgegangen, dass relevante Faktoren von MFA mit Multifactor-Authentifizierungseinstellungen konfigurieren aktiviert werden.
Step1: Benutzer mit Duo-Faktor registrieren
/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/Medurchfü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 empfangendeviceId:in der Schritt-1-Antwort empfangenuserName: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.