Duo Security mit Identitätsdomains verwenden
Diese Anwendungsfälle bieten ein schrittweises Beispiel für die Verwendung des Duo-Web-SDK v2 oder des Duo-Web-SDK v4 mit einer Identitätsdomain.
Aktualisieren der Einstellungen für den Authentifizierungsfaktor mit den Duo Security-Einstellungen
Das folgende Beispiel zeigt, wie Sie die Einstellungen für die Multifaktor-Authentifizierung für einen Mandanten aktualisieren, indem Sie eine PUT-Anforderung für die REST-Ressource über 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 darstellt 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"
}
Antwortbody
Das folgende Beispiel zeigt den Inhalt des Antworttextes 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
Das 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.
-
Mit cURL,
GET /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettings
Antwortbeispiel
Die folgenden Duo Web SDK v2-Einstellungen 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 im Abschnitt
urn:ietf:params:scim:schemas:oracle:idcs:extension:thirdParty:AuthenticationFactorSettings
enableWebSDKv4
undduoSecurityAuthzRedirectUrl
hinzufügen.enableWebSDKv4
: Der Standardwert istfalse
. WennenableWebSDKv4
falsch ist, wird Duo Web SDK v2 verwendet.-
duoSecurityAuthzRedirectUrl
: Der Standardwert ist leer. Fügen Sie hier die URL Ihrer Organisation hinzu. Die Umleitungs-URL wird verwendet, um die Duo-Sicherheitsauthentifizierung zu initiieren, die eine Antwort vom Duo-Sicherheitsserver mitduoSecurityAuthzState
undduoSecurityAuthzCode
empfängt. Diese URL kann mit der benutzerdefinierten Benutzeroberfläche überschrieben werden. Die benutzerdefinierte Benutzeroberfläche 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" } }
-
Verwenden Sie cURL,
PUT /admin/v1/AuthenticationFactorSettings/AuthenticationFactorSettings
mit der Payload von Schritt 3.
Authentifizierung von Benutzername und Kennwort mit Duo Security als Authentifizierungsfaktor
Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains, um Benutzer zu authentifizieren und eine Multifaktor-Registrierung und -Authentifizierung mit Duo Web SDK v2 oder Duo Web SDK v4 durchzuführen.
- 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 zur Integration Ihrer Anwendungen mit Identitätsdomains für Single Sign-On-Zwecke verwendet werden.
Laden Sie die Collection der 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-Sicherheit mit Web-SDK registrieren v2
-
Benutzeraccount mit Duo Security mit Web-SDK authentifizieren v2
-
Benutzeraccount mit Duo Security mit Web-SDK v4 authentifizieren
-
Benutzer mit Duo-Sicherheit authentifizieren, wenn sie als Backupfaktor verwendet werden
-
Unterstützen Sie vertrauenswürdige Geräte bei der Verwendung von Duo als Authentifizierungsfaktor
Neuen Benutzer mit Duo Security über das 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 zur Integration Ihrer Anwendungen mit Identitätsdomains für Single Sign-On-Zwecke verwendet werden.
Laden Sie die Collection der 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: Antrag auf Duo-Sicherheitsanmeldung initiieren
- Schritt 4: Duo-Sicherheitsauthentifizierung initiieren
- 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 Einstellungen für Multifaktor-Authentifizierung konfigurieren.
Schritt 1: Authentifizierungsablauf starten
Rufen Sie das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Anwendungsbeispiel wird die Anmeldung im nächsten Schritt gesendet, um die Anmeldung für den Benutzer zu initiieren.
Schritt 3: Antrag auf Duo-Sicherheitsanmeldung initiieren
Dieser Schritt initiiert die Duo Security-Anmeldung. 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt credSubmit
gesendet.
Schritt 4: Duo-Sicherheitsauthentifizierung initiieren
Verwenden Sie das Web-SDK v2 von Duo, um Identitätsdomains mit Duo Security zu integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert, die 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. Im folgenden Beispiel können Sie die Duo-Sicherheitsauthentifizierung initiieren und iFrame 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);
}
Nach Erhalt der Antwort für Duo Security 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 das Attribut 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 Factor-Zugangsdaten 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 in der nächsten Anforderung als op
-Wert gesendet werden kann. In diesem Anwendungsbeispiel 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 über das 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.
Wenn Sie das Duo-Web-SDK v4 aktivieren müssen, finden Sie weitere Informationen unter Duo-Web-SDK aktivieren 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 zur Integration Ihrer Anwendungen mit Identitätsdomains für Single Sign-On-Zwecke verwendet werden.
Laden Sie die Collection der 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: Antrag auf Duo-Sicherheitsanmeldung initiieren
- Schritt 4: Duo-Sicherheitsauthentifizierung initiieren
- 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 Einstellungen für Multifaktor-Authentifizierung konfigurieren.
Schritt 1: Authentifizierungsablauf starten
Rufen Sie das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Anwendungsbeispiel wird die Anmeldung im nächsten Schritt gesendet, um die Anmeldung für den Benutzer zu initiieren.
Schritt 3: Antrag auf Duo-Sicherheitsanmeldung initiieren
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 initiieren
Während der Duo Security-Authentifizierung leitet der Browser zum Duo Security Server um, dann lädt der Duo Security Server die sekundäre Authentifizierungsseite, auf der der Benutzer die sekundäre Authentifizierung ausführt. Nach erfolgreicher Authentifizierung antwortet der Duo Security Server mit den Status- (duoSecurityAuthzState) und Code-Parametern (duoSecurityAuthzCode). Diese Parameter müssen an die Identitätsdomain weitergeleitet werden, um die Authentifizierung abzuschließen.
Führen Sie die folgenden Schritte aus, um die Status- und Codeparameter abzurufen:
-
Rufen Sie die URL ab, zu der von
duoSecurityAuthzRequest
umgeleitet werden soll.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 Redirect-URL für
duoSecurityAuthzRedirectURL
. -
Führen Sie die 303-Umleitung zum Duo Security Server durch.
-
Schließen Sie den Anmelde- und Authentifizierungsprozess von Duo Security ab.
Der Duo Security Server leitet mit
duoSecurityAuthzState
undduoSecurityAuthzCode
zurück zuduoSecurityAuthzRedirectURL
.
Schritt 5: Faktorzugangsdaten weiterleiten
Übergeben Sie duoSecurityAuthzState
und duoSecurityAuthzCode
von der Antwort an die Identitätsdomain, um die Authentifizierung abzuschließen.
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 bei Duo Web SDK v2.
Laden Sie die Collection der 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 Einstellungen für Multifaktor-Authentifizierung konfigurieren
Schritt 1: Authentifizierungsablauf starten
Rufen Sie das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt credSubmit
gesendet.
Schritt 3: Duo-Sicherheitsauthentifizierung initiieren
Verwenden Sie das Web-SDK v2 von Duo, um Identitätsdomains mit Duo Security zu integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert, die 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. Im folgenden Beispiel können Sie die Duo-Sicherheitsauthentifizierung initiieren und iFrame 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);
}
Nach Erhalt der Antwort für Duo Security 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 das Attribut 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 Factor-Zugangsdaten 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 bei Duo Web SDK v4.
Wenn Sie das Duo-Web-SDK v4 aktivieren müssen, finden Sie weitere Informationen unter Duo-Web-SDK aktivieren v4.
Laden Sie die Collection der 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 Einstellungen für Multifaktor-Authentifizierung konfigurieren.
Schritt 1: Authentifizierungsablauf starten
Rufen Sie das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt credSubmit
gesendet.
Schritt 3: Duo-Sicherheitsauthentifizierung initiieren
Während der Duo Security-Authentifizierung leitet der Browser zum Duo Security Server um, dann lädt der Duo Security Server die sekundäre Authentifizierungsseite, auf der der Benutzer die sekundäre Authentifizierung ausführt. Nach erfolgreicher Authentifizierung antwortet der Duo Security Server mit den Status- (duoSecurityAuthzState) und Code-Parametern (duoSecurityAuthzCode). Diese Parameter müssen an die Identitätsdomain weitergeleitet werden, um die Authentifizierung abzuschließen.
Führen Sie die folgenden Schritte aus, um die Status- und Codeparameter abzurufen:
-
Rufen Sie die URL ab, zu der von
duoSecurityAuthzRequest
umgeleitet werden soll.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 Redirect-URL für
duoSecurityAuthzRedirectURL
. -
Führen Sie die 303-Umleitung zum Duo Security Server durch.
-
Schließen Sie den Anmelde- und Authentifizierungsprozess von Duo Security ab.
Der Duo Security Server leitet mit
duoSecurityAuthzState
undduoSecurityAuthzCode
zurück zuduoSecurityAuthzRedirectURL
.
Schritt 4: Faktorzugangsdaten weiterleiten
Übergeben Sie duoSecurityAuthzState
und duoSecurityAuthzCode
von der Antwort an die Identitätsdomain, um die Authentifizierung abzuschließen.
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 Security authentifizieren, wenn sie als Backup-Faktor verwendet werden
Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains, um einen Benutzeraccount bei Duo Security zu authentifizieren, auch wenn er als Backupfaktor konfiguriert ist.
Laden Sie die Collection der 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 das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt getBackupFactors
gesendet.
Schritt 3: Liste der Backupfaktoren abrufen
Mit 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 in der nächsten Anforderung als op
-Wert 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 schrittweises 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 Flag preferred
auf true
setzen, um Duo Security als bevorzugten Faktor zu verwenden, wenn ein Benutzer bereits einen anderen Faktor als Duo Security als bevorzugten Faktor hat.
Laden Sie die Collection der 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 das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt credSubmit
gesendet.
Schritt 3: Duo-Sicherheitsauthentifizierung initiieren
Verwenden Sie das Web-SDK v2 von Duo, um Identitätsdomains mit Duo Security zu integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert, die 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. Im folgenden Beispiel können Sie die Duo-Sicherheitsauthentifizierung initiieren und iFrame 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);
}
Nach Erhalt der Antwort für Duo Security müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.
Schritt 4: Duo Security als bevorzugten Faktor aktivieren
-
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"
}
Vertrauenswürdiges Gerät bei Verwendung von Duo als Authentifizierungsfaktor unterstützen
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, wenn Duo als Authentifizierungsfaktor verwendet wird.
Laden Sie die Collection der 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 das anfängliche requestState
ab, um den Authentifizierungsablauf 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 Option
appName
ist optional. Die appName
ist der Name der App, auf die der Client zugreifen möchte. Wenn eine appName
bereitgestellt wird, werden für die App spezifische Anmelde-Policys verarbeitet, und der Client wird basierend auf dieser Policy für die erforderlichen Faktoren 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 in der nächsten Anforderung als op
-Wert 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. Hierbei 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 Operationswert in der nächsten Anforderung gesendet werden kann. In diesem Anwendungsbeispiel wird im nächsten Schritt credSubmit
gesendet.
Schritt 3: Duo-Sicherheitsauthentifizierung initiieren
Verwenden Sie das Web-SDK v2 von Duo, um Identitätsdomains mit Duo Security zu integrieren. Duo bietet eine JavaScript-Bibliothek, die mit iFrame interagiert, die 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. Im folgenden Beispiel können Sie die Duo-Sicherheitsauthentifizierung initiieren und iFrame 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);
}
Nach Erhalt der Antwort für Duo Security müssen Sie die Antwort an Identitätsdomains übergeben, um die Authentifizierung abzuschließen.
Schritt 4: Gerät als vertrauenswürdig aktivieren
Dieser Schritt aktiviert ein Gerät als vertrauenswürdig. Nachdem das Gerät vertrauenswürdig ist, wird MFA nicht mehr 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 anmelden
Dieser Anwendungsfall enthält ein schrittweises Beispiel für die Verwendung der REST-API für Identitätsdomains zur Selfservice-Registrierung bei der Multifaktor-Authentifizierung (MFA) mit Duo Security.
Laden Sie die Collection der Anwendungsbeispiele für die Authentifizierung von Identitätsdomains und die globale Variablendatei aus dem Ordner idcs-rest-clients im Repository idm-samples GitHub herunter, und importieren Sie sie dann in Postman.
Als Voraussetzung müssen Sie ein ME-Token abrufen, 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 Einstellungen für die Multifaktor-Authentifizierung konfigurieren aktiviert sind.
Step1: Benutzer mit Duo Factor 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/Me
durchführen, um den Wert "id" abzurufen.
Anforderungsbeispiel
Das folgende Beispiel zeigt den Inhalt des POST-Anforderungstextes 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 Antworttextes 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 initiieren
Dieser Schritt initiiert die Authentifizierung auf der Drittanbieterseite, 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-Anforderungstextes 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
Dieser Schritt ruft die Drittanbieter-Faktor-API mit erfassten Zugangsdaten auf, um die Registrierung eines Benutzers in einer POST-Anforderung beim 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 ist. In diesem Fall ist es THIRDPARTY
.