---
title: Duo Security
slug: connectors/duo-security
docTags: 
createdAt: 2026-06-09T16:30:29.905Z
---

Duo Security provides multi-factor authentication and secure access solutions to protect organizations' sensitive data.

Duo Security is a trusted platform for advanced identity verification and access management, ensuring secure user authentication and device management. This connector enables seamless integration with Swimlane Turbine, allowing users to automate identity and access management tasks such as associating phones with users, modifying administrators, and retrieving user and device information. By leveraging this integration, security teams can enhance their operational efficiency, streamline user management processes, and ensure robust security measures without manual intervention.

## Prerequisites

Before you can use the Duo Security connector for Turbine, you'll need access to the Duo Security API. This requires the following:

- HMAC authentication using the following parameters:
  - URL: The endpoint URL for accessing Duo Security services.
  - Username: The username required for authenticating API requests.
  - Secret Key: A secret key used to sign requests and verify authenticity.

## Capabilities

This Connector provides the following capabilities:

- Associate Phone Device with User
- Modify Administrator
- Retrieve Administrators
- Retrieve Bypass Codes
- Retrieve Phones by User ID
- Retrieve Phones
- Retrieve User by User ID
- Retrieve Users
- Update User

## Asset Setup

Setting up the Duo Security Connector requires configuring HMAC authentication. Here are the necessary details:

- **URL**: A URL to the target host.
- **Username**: Use your Duo application's integration key as the HTTP Username.
- **Secret Key**: This key is required for HMAC authentication.
- **Verify SSL Certificates**: Choose if you want to verify SSL certificates when connecting.
- **HTTP(s) Proxy**: If you route requests through a proxy, specify it here.

Ensure that you've filled in the mandatory fields: `URL`, `Username`, and `Secret Key`.

## Notes

- Always ensure you have the necessary permissions in Duo before trying to modify or fetch data.
- For more in-depth information and potential use cases, refer to the [Duo Security Admin API documentation](https://duo.com/docs/adminapi).
- [Duo Client API Docs](https://github.com/duosecurity/duo_client_python)

## Additional Documentation

- [Duo Security Connector Documentation](https://docs.swimlane.com/connectors/duo-security)
- [Duo Security API Documentation](https://duo.com/docs/adminapi)

# Configurations

## Duo HMAC

Authenticates using Duo's HMAC

### Configuration Parameters

| **Parameter** | **Description**                                                 | **Type** | **Required** |
| ------------- | --------------------------------------------------------------- | -------- | ------------ |
| url           | A URL to the target host.                                       | string   | Required     |
| username      | Use your Duo application's integration key as the HTTP Username | string   | Required     |
| secret\_key   | Secret Key                                                      | string   | Required     |
| verify\_ssl   | Verify SSL certificate                                          | boolean  | Optional     |
| http\_proxy   | A proxy to route requests through.                              | string   | Optional     |

# Actions

## Associate Phone with User

Associate a specified phone with a user in Duo Security using User ID and Phone ID. 'Grant write resource' API permission is required.

### Input

| **Argument Name** | **Type** | **Required** | **Description**   |
| ----------------- | -------- | ------------ | ----------------- |
| `user_id`         | string   | Required     | Unique identifier |
| `phone_id`        | string   | Required     | Unique identifier |

### Input Example

`{"user_id":"af456y","phone_id":"12573883"}`

### Output

| **Parameter** | **Type** | **Description**                      |
| ------------- | -------- | ------------------------------------ |
| `status_code` | number   | HTTP status code of the response     |
| `reason`      | string   | Response reason phrase               |
| `success`     | boolean  | Whether the operation was successful |

### Output Example

`{"status_code":200,"reason":"OK","json_body":{"success":true}}`

## Modify Administrator

Update attributes of a specified administrator in Duo Security using the admin's unique identifier.

### Input

| **Argument Name**          | **Type** | **Required** | **Description**                    |
| -------------------------- | -------- | ------------ | ---------------------------------- |
| `admin_id`                 | string   | Required     | Unique identifier                  |
| `name`                     | string   | Optional     | Name of the resource               |
| `phone`                    | string   | Optional     | Parameter for Modify Administrator |
| `password`                 | string   | Optional     | Parameter for Modify Administrator |
| `password_change_required` | boolean  | Optional     | Parameter for Modify Administrator |
| `status`                   | string   | Optional     | Status value                       |

### Input Example

`{"admin_id":"1241234567890","name":"Jones","phone":"+1234567890","password":"loremPass","password_change_required":true,"status":"active"}`

### Output

| **Parameter** | **Type** | **Description**                      |
| ------------- | -------- | ------------------------------------ |
| `status_code` | number   | HTTP status code of the response     |
| `reason`      | string   | Response reason phrase               |
| `success`     | boolean  | Whether the operation was successful |

### Output Example

`{"status_code":200,"reason":"OK","json_body":{"success":true}}`

## Retrieve Administrators

Retrieve a comprehensive list of administrators from Duo Security.

### Input

| **Argument Name** | **Type** | **Required** | **Description**                       |
| ----------------- | -------- | ------------ | ------------------------------------- |
| `limit`           | number   | Optional     | Parameter for Retrieve Administrators |
| `offset`          | number   | Optional     | Parameter for Retrieve Administrators |

### Input Example

`{"limit":100,"offset":0}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":[{"alias1":"adam_admin@gds.pri","alias2":null,"alias3":null,"alias4":null,"aliases":{},"created":1650553488,"desktoptokens":[],"email":"","enable_auto_prompt":true,"external_id":"n4Hm9FEJMUGWeqJQoyLWlA==","firstname":"","groups":[],"is_enrolled":false,"last_directory_sync":1718625924,"last_login":null},{"alias1":"adfs@gds.pri","alias2":null,"alias3":null,"alias4":null,"aliases":{},"created":1578667011,"desktoptokens":[],"email":"","enable_auto_prompt"...`

## Retrieve bypass codes

Retrieve a list of bypass codes from Duo Security to facilitate secure, temporary access without standard authentication.

### Input

| **Argument Name** | **Type** | **Required** | **Description**                     |
| ----------------- | -------- | ------------ | ----------------------------------- |
| `limit`           | number   | Optional     | Parameter for Retrieve bypass codes |
| `offset`          | number   | Optional     | Parameter for Retrieve bypass codes |

### Input Example

`{"limit":100,"offset":0}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":[{"admin_email":"jont+gds@getgds.com","bypass_code_id":"DBFQMKTW4WSILQ4Z76NH","created":1642379903,"expiration":null,"reuse_count":null,"user":{}}]}`

## Retrieve Phones

Retrieve a paginated list of phones from Duo Security, including details like phone number and device type.

### Input

| **Argument Name** | **Type** | **Required** | **Description**               |
| ----------------- | -------- | ------------ | ----------------------------- |
| `limit`           | number   | Optional     | Parameter for Retrieve Phones |
| `offset`          | number   | Optional     | Parameter for Retrieve Phones |

### Input Example

`{"limit":100,"offset":0}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":[{"activated":true,"capabilities":[],"extension":"","last_seen":"2024-06-15T11:36:45","model":"Samsung SM-N960U","name":"","number":"+13373718943","phone_id":"DPA5J8LV75ECQR4F38V2","platform":"Google Android","postdelay":"","predelay":"","sms_passcodes_sent":true,"type":"Mobile","users":[]},{"activated":true,"capabilities":[],"extension":"","last_seen":"2024-06-17T10:02:10","model":"Google Pixel 8","name":"","number":"+13375523259","phone_id":"DPIBYOS...`

## Retrieve Phones by User ID

Retrieve a list of phones linked to a specific user ID in Duo Security, presented in a paginated format.

### Input

| **Argument Name** | **Type** | **Required** | **Description**   |
| ----------------- | -------- | ------------ | ----------------- |
| `user_id`         | string   | Required     | Unique identifier |

### Input Example

`{"user_id":"af345d"}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":{}}`

## Retrieve User by User ID

Retrieve details for a specific user in Duo Security using the provided User ID.

### Input

| **Argument Name** | **Type** | **Required** | **Description**   |
| ----------------- | -------- | ------------ | ----------------- |
| `user_id`         | string   | Required     | Unique identifier |

### Input Example

`{"user_id":"af345d"}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":{}}`

## Retrieve Users

Generate a paged list of users from Duo Security, providing an overview of registered individuals.

### Input

| **Argument Name** | **Type** | **Required** | **Description**              |
| ----------------- | -------- | ------------ | ---------------------------- |
| `limit`           | number   | Optional     | Parameter for Retrieve Users |
| `offset`          | number   | Optional     | Parameter for Retrieve Users |

### Input Example

`{"limit":100,"offset":0}`

### Output

| **Parameter** | **Type** | **Description**                  |
| ------------- | -------- | -------------------------------- |
| `status_code` | number   | HTTP status code of the response |
| `reason`      | string   | Response reason phrase           |

### Output Example

`{"status_code":200,"reason":"OK","json_body":[{"alias1":"adam_admin@gds.pri","alias2":null,"alias3":null,"alias4":null,"aliases":{},"created":1650553488,"desktoptokens":[],"email":"","enable_auto_prompt":true,"external_id":"n4Hm9FEJMUGWeqJQoyLWlA==","firstname":"","groups":[],"is_enrolled":false,"last_directory_sync":1718625924,"last_login":null},{"alias1":"adfs@gds.pri","alias2":null,"alias3":null,"alias4":null,"aliases":{},"created":1578667011,"desktoptokens":[],"email":"","enable_auto_prompt"...`

## Update User

Modify a user's details such as username, real name, status, or notes in Duo Security using the provided user ID.

### Input

| **Argument Name** | **Type** | **Required** | **Description**           |
| ----------------- | -------- | ------------ | ------------------------- |
| `user_id`         | string   | Required     | Unique identifier         |
| `username`        | string   | Optional     | Name of the resource      |
| `realname`        | string   | Optional     | Name of the resource      |
| `status`          | string   | Optional     | Status value              |
| `notes`           | string   | Optional     | Parameter for Update User |
| `email`           | string   | Optional     | Parameter for Update User |
| `firstname`       | string   | Optional     | Name of the resource      |
| `lastname`        | string   | Optional     | Name of the resource      |
| `alias1`          | string   | Optional     | Parameter for Update User |
| `alias2`          | string   | Optional     | Parameter for Update User |
| `alias3`          | string   | Optional     | Parameter for Update User |
| `alias4`          | string   | Optional     | Parameter for Update User |
| `aliases`         | string   | Optional     | Parameter for Update User |

### Input Example

`{"user_id":"afa345f","username":"Jones","realname":"Jones","status":"active","notes":"notes","email":"jjones@test.com","firstname":"John","lastname":"Doe","alias1":"alias1","alias2":"alias2","alias3":"alias3","alias4":"alias4","aliases":"aliases"}`

### Output

| **Parameter** | **Type** | **Description**                      |
| ------------- | -------- | ------------------------------------ |
| `status_code` | number   | HTTP status code of the response     |
| `reason`      | string   | Response reason phrase               |
| `success`     | boolean  | Whether the operation was successful |

### Output Example

`{"status_code":200,"reason":"OK","json_body":{"success":true}}`

# Response Headers

| **Header**   | **Description**                                       | **Example**                   |
| ------------ | ----------------------------------------------------- | ----------------------------- |
| Content-Type | The media type of the resource                        | application/json              |
| Date         | The date and time at which the message was originated | Thu, 01 Jan 2024 00:00:00 GMT |
