n8n-nodes-duo 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Create a new Duo credential in n8n with these fields:
|
|
|
31
31
|
Use this credential in all Duo node endpoints.
|
|
32
32
|
See the [Duo Auth API documentation](https://duo.com/docs/authapi) for integration setup and endpoint details.
|
|
33
33
|
|
|
34
|
-
The package provides
|
|
34
|
+
The package provides one **Duo Security** node for regular workflow connections and n8n AI Agents. Because the node is usable as a tool, n8n exposes it automatically through an `ai_tool` connection when it is attached to an AI workflow.
|
|
35
35
|
|
|
36
36
|
## Example: expense reimbursement approval
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ The included [Duo Expense Reimbursement Approval](./examples/workflows/duo-human
|
|
|
39
39
|
|
|
40
40
|
The example is inactive and has no credential references. Replace the example manager username and connect the approved branch to your finance or payroll system before enabling it. The Duo Push is a real authentication challenge.
|
|
41
41
|
|
|
42
|
-
The [Duo Security Capability Showcase](./examples/workflows/check-api-health.json) workflow demonstrates every Duo endpoint, synchronous and asynchronous push flows, status polling, and the
|
|
42
|
+
The [Duo Security Capability Showcase](./examples/workflows/check-api-health.json) workflow demonstrates every Duo endpoint, synchronous and asynchronous push flows, status polling, and the Duo Security node connected as an AI tool. It has five independent Manual Trigger scenarios. Assign a Duo credential to the Duo nodes and configure the chat model before running it; the AUTH paths create real authentication challenges.
|
|
43
43
|
|
|
44
44
|
## Supported endpoints
|
|
45
45
|
|
|
@@ -56,7 +56,7 @@ Each operation accepts input parameters and returns JSON output.
|
|
|
56
56
|
|
|
57
57
|
## Development and testing
|
|
58
58
|
|
|
59
|
-
When the repository Docker development environment starts, it imports the inactive [`Duo Security Capability Showcase`](./examples/workflows/check-api-health.json) and [`Duo Expense Reimbursement Approval`](./examples/workflows/duo-human-in-the-loop-approval.json) sample workflows. The showcase demonstrates every Duo endpoint, synchronous and asynchronous push flows, status polling, and the node connected as an AI tool. The approval example starts with an expense form, sends contextual `pushinfo` in a synchronous Duo Push, and branches on the manager's decision; its usage notes are documented in [`duo-human-in-the-loop-approval.md`](./examples/workflows/duo-human-in-the-loop-approval.md). Both workflows intentionally omit credentials. Create or select a Duo credential and use test users before running them; the push steps have a real effect.
|
|
59
|
+
When the repository Docker development environment starts, it imports the inactive [`Duo Security Capability Showcase`](./examples/workflows/check-api-health.json) and [`Duo Expense Reimbursement Approval`](./examples/workflows/duo-human-in-the-loop-approval.json) sample workflows. The showcase demonstrates every Duo endpoint, synchronous and asynchronous push flows, status polling, and the regular node connected as an AI tool. The approval example starts with an expense form, sends contextual `pushinfo` in a synchronous Duo Push, and branches on the manager's decision; its usage notes are documented in [`duo-human-in-the-loop-approval.md`](./examples/workflows/duo-human-in-the-loop-approval.md). Both workflows intentionally omit credentials. Create or select a Duo credential and use test users before running them; the push steps have a real effect.
|
|
60
60
|
|
|
61
61
|
From the repository root, install the locked dependencies and run the Duo package checks with:
|
|
62
62
|
|
|
@@ -463,36 +463,33 @@ function safeStringify(obj) {
|
|
|
463
463
|
|
|
464
464
|
// nodes/DuoSecurity/V1/DuoSecurityV1Base.ts
|
|
465
465
|
var DuoSecurityV1Base = class {
|
|
466
|
-
constructor(baseDescription
|
|
466
|
+
constructor(baseDescription) {
|
|
467
467
|
this.icon = {
|
|
468
468
|
light: "file:duo.svg",
|
|
469
469
|
dark: "file:duo-dark.svg"
|
|
470
470
|
};
|
|
471
|
-
const isTool = mode === "tool";
|
|
472
471
|
this.description = {
|
|
473
472
|
...baseDescription,
|
|
474
|
-
displayName:
|
|
475
|
-
name:
|
|
473
|
+
displayName: "Duo Security",
|
|
474
|
+
name: "duoSecurity",
|
|
476
475
|
icon: { light: "file:duo.svg", dark: "file:duo-dark.svg" },
|
|
477
476
|
group: ["transform"],
|
|
478
|
-
subtitle:
|
|
477
|
+
subtitle: "Duo Security Multi-factor Authentication/Authorization",
|
|
479
478
|
version: 1,
|
|
480
|
-
description:
|
|
479
|
+
description: "Connects n8n workflows to Duo Security for user verification and second-factor authentication.",
|
|
481
480
|
builderHint: {
|
|
482
|
-
message:
|
|
481
|
+
message: "Use for Duo user verification, pre-authentication, Duo Push approval, or authentication status checks."
|
|
483
482
|
},
|
|
484
|
-
defaults: { name:
|
|
485
|
-
inputs:
|
|
486
|
-
outputs:
|
|
483
|
+
defaults: { name: "Duo Security" },
|
|
484
|
+
inputs: [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
485
|
+
outputs: [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
487
486
|
credentials: [{ name: "duoSecurityApi", required: true }],
|
|
488
487
|
properties: duoProperties,
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
description: "Use Duo Security to verify a user or start a second-factor authentication challenge. Use PREAUTH before AUTH when checking whether a user can authenticate. Treat only an explicit result.response.result of allow as approval; never continue after a missing, denied, expired, or failed response."
|
|
493
|
-
}
|
|
488
|
+
usableAsTool: {
|
|
489
|
+
replacements: {
|
|
490
|
+
description: "Use Duo Security to verify a user or start a second-factor authentication challenge. Use PREAUTH before AUTH when checking whether a user can authenticate. Treat only an explicit result.response.result of allow as approval; never continue after a missing, denied, expired, or failed response."
|
|
494
491
|
}
|
|
495
|
-
}
|
|
492
|
+
}
|
|
496
493
|
};
|
|
497
494
|
}
|
|
498
495
|
async execute() {
|
|
@@ -528,7 +525,7 @@ var DuoSecurityV1Base = class {
|
|
|
528
525
|
// nodes/DuoSecurity/V1/DuoSecurityV1.ts
|
|
529
526
|
var DuoSecurityV1 = class extends DuoSecurityV1Base {
|
|
530
527
|
constructor(baseDescription) {
|
|
531
|
-
super(baseDescription
|
|
528
|
+
super(baseDescription);
|
|
532
529
|
}
|
|
533
530
|
};
|
|
534
531
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../wetomate-node-toolkit/src/collections.ts", "../../../../wetomate-node-toolkit/src/parameter-mapping.ts", "../../../../wetomate-node-toolkit/src/index.ts", "../../../nodes/DuoSecurity/DuoSecurity.node.ts", "../../../nodes/DuoSecurity/V1/DuoSecurityV1Base.ts", "../../../nodes/DuoSecurity/V1/duoProperties.ts", "../../../nodes/DuoSecurity/V1/duoParameterMapping.ts", "../../../nodes/DuoSecurity/utils/duoUtils.ts", "../../../nodes/DuoSecurity/V1/DuoSecurityV1.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,SAAA,6BAAAC;AAAA,aAAgBA,4BAA2B,OAAkB;AAC5D,YAAM,YAAyB,CAAA;AAC/B,iBAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC/C,YAAI,QAAQ,UAAa,QAAQ;AAChC,oBAAU,GAAG,IAAI,OAAO,GAAG,EAAE,KAAI;MACnC;AACA,aAAO,OAAO,KAAK,SAAS,EAAE,SAAS,YAAY,CAAA;IACpD;;;;;;;;;ACSA,IAAAC,SAAA,oBAAAC;AAAA,aAAgBA,mBACf,SACA,WACA,OAAsC;AAEtC,aAAO,MAAM,OAAoB,CAAC,YAAY,SAAQ;;AACrD,cAAM,QAAQ,QAAQ,iBAAiB,KAAK,WAAW,WAAW,IAAI;AACtE,YAAI,UAAU,QAAQ,UAAU;AAAW,iBAAO;AAClD,YAAI,KAAK,WAAW;AACnB,gBAAM,cAAc,KAAK,UAAU,OAAO,EAAE,SAAS,UAAS,CAAE;AAChE,cAAI;AAAa,mBAAO,OAAO,YAAY,WAAW;AACtD,iBAAO;QACR;AACA,oBAAW,KAAA,KAAK,YAAM,QAAA,OAAA,SAAA,KAAI,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,KAAI;AAC9D,eAAO;MACR,GAAG,CAAA,CAAE;IACN;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA,iBAAA,uBAAAC,QAAA;AACA,iBAAA,6BAAAA,QAAA;;;;;ACDA;AAAA;AAAA;AAAA;AAAA;AACA,IAAAC,uBAAkC;;;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["exports", "processOptionalCollections", "exports", "mapNodeParameters", "exports", "import_n8n_workflow"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-duo",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Duo Security multi-factor authentication community node for n8n",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package",
|
|
@@ -48,8 +48,7 @@
|
|
|
48
48
|
"dist/credentials/DuoSecurityApi.credentials.js"
|
|
49
49
|
],
|
|
50
50
|
"nodes": [
|
|
51
|
-
"dist/nodes/DuoSecurity/DuoSecurity.node.js"
|
|
52
|
-
"dist/nodes/DuoSecurity/DuoSecurityTool.node.js"
|
|
51
|
+
"dist/nodes/DuoSecurity/DuoSecurity.node.js"
|
|
53
52
|
]
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|
|
@@ -1,557 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
try {
|
|
10
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
-
} catch (e) {
|
|
12
|
-
throw mod = 0, e;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
var __export = (target, all) => {
|
|
16
|
-
for (var name in all)
|
|
17
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
18
|
-
};
|
|
19
|
-
var __copyProps = (to, from, except, desc) => {
|
|
20
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
-
for (let key of __getOwnPropNames(from))
|
|
22
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
23
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
24
|
-
}
|
|
25
|
-
return to;
|
|
26
|
-
};
|
|
27
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
28
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
29
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
30
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
31
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
32
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
33
|
-
mod
|
|
34
|
-
));
|
|
35
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
|
-
|
|
37
|
-
// ../wetomate-node-toolkit/dist/collections.js
|
|
38
|
-
var require_collections = __commonJS({
|
|
39
|
-
"../wetomate-node-toolkit/dist/collections.js"(exports2) {
|
|
40
|
-
"use strict";
|
|
41
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
42
|
-
exports2.processOptionalCollections = processOptionalCollections2;
|
|
43
|
-
function processOptionalCollections2(value) {
|
|
44
|
-
const processed = {};
|
|
45
|
-
for (const [key, val] of Object.entries(value)) {
|
|
46
|
-
if (val !== void 0 && val !== null)
|
|
47
|
-
processed[key] = String(val).trim();
|
|
48
|
-
}
|
|
49
|
-
return Object.keys(processed).length ? processed : {};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
// ../wetomate-node-toolkit/dist/parameter-mapping.js
|
|
55
|
-
var require_parameter_mapping = __commonJS({
|
|
56
|
-
"../wetomate-node-toolkit/dist/parameter-mapping.js"(exports2) {
|
|
57
|
-
"use strict";
|
|
58
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
59
|
-
exports2.mapNodeParameters = mapNodeParameters2;
|
|
60
|
-
function mapNodeParameters2(context, itemIndex, rules) {
|
|
61
|
-
return rules.reduce((parameters, rule) => {
|
|
62
|
-
var _a;
|
|
63
|
-
const value = context.getNodeParameter(rule.parameter, itemIndex, null);
|
|
64
|
-
if (value === null || value === void 0)
|
|
65
|
-
return parameters;
|
|
66
|
-
if (rule.transform) {
|
|
67
|
-
const transformed = rule.transform(value, { context, itemIndex });
|
|
68
|
-
if (transformed)
|
|
69
|
-
Object.assign(parameters, transformed);
|
|
70
|
-
return parameters;
|
|
71
|
-
}
|
|
72
|
-
parameters[(_a = rule.target) !== null && _a !== void 0 ? _a : rule.parameter] = String(value).trim();
|
|
73
|
-
return parameters;
|
|
74
|
-
}, {});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
// ../wetomate-node-toolkit/dist/index.js
|
|
80
|
-
var require_dist = __commonJS({
|
|
81
|
-
"../wetomate-node-toolkit/dist/index.js"(exports2) {
|
|
82
|
-
"use strict";
|
|
83
|
-
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
|
|
84
|
-
if (k2 === void 0) k2 = k;
|
|
85
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
86
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
87
|
-
desc = { enumerable: true, get: function() {
|
|
88
|
-
return m[k];
|
|
89
|
-
} };
|
|
90
|
-
}
|
|
91
|
-
Object.defineProperty(o, k2, desc);
|
|
92
|
-
}) : (function(o, m, k, k2) {
|
|
93
|
-
if (k2 === void 0) k2 = k;
|
|
94
|
-
o[k2] = m[k];
|
|
95
|
-
}));
|
|
96
|
-
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
|
|
97
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
|
98
|
-
};
|
|
99
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
100
|
-
__exportStar(require_collections(), exports2);
|
|
101
|
-
__exportStar(require_parameter_mapping(), exports2);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
// nodes/DuoSecurity/DuoSecurityTool.node.ts
|
|
106
|
-
var DuoSecurityTool_node_exports = {};
|
|
107
|
-
__export(DuoSecurityTool_node_exports, {
|
|
108
|
-
DuoSecurityTool: () => DuoSecurityTool
|
|
109
|
-
});
|
|
110
|
-
module.exports = __toCommonJS(DuoSecurityTool_node_exports);
|
|
111
|
-
var import_n8n_workflow2 = require("n8n-workflow");
|
|
112
|
-
|
|
113
|
-
// nodes/DuoSecurity/V1/DuoSecurityV1Base.ts
|
|
114
|
-
var import_n8n_workflow = require("n8n-workflow");
|
|
115
|
-
|
|
116
|
-
// nodes/DuoSecurity/V1/duoProperties.ts
|
|
117
|
-
var commonExtraAuthFields = [
|
|
118
|
-
{
|
|
119
|
-
displayName: "Hostname",
|
|
120
|
-
name: "hostname",
|
|
121
|
-
type: "string",
|
|
122
|
-
default: "",
|
|
123
|
-
placeholder: "Ex: johns-laptop or webserver01.company.com",
|
|
124
|
-
description: "The host name of the device accessing the application"
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
displayName: "IP Address",
|
|
128
|
-
name: "ipaddr",
|
|
129
|
-
type: "string",
|
|
130
|
-
default: "",
|
|
131
|
-
placeholder: "Ex: 192.168.1.1",
|
|
132
|
-
description: "If an Auth API client does not send the ipaddr (IP address of the user) value in a request, policy settings based on available IP address information have no effect"
|
|
133
|
-
}
|
|
134
|
-
];
|
|
135
|
-
var duoProperties = [
|
|
136
|
-
{
|
|
137
|
-
displayName: "Endpoints",
|
|
138
|
-
name: "endpoint",
|
|
139
|
-
type: "options",
|
|
140
|
-
options: [
|
|
141
|
-
{
|
|
142
|
-
name: "AUTH",
|
|
143
|
-
value: "auth",
|
|
144
|
-
description: "The /auth endpoint performs second-factor authentication for a user by sending a push notification to the user's smartphone app, verifying a passcode, or placing a phone call"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
name: "AUTH STATUS",
|
|
148
|
-
value: "auth_status",
|
|
149
|
-
description: 'The /auth_status endpoint "long-polls" for the next status update from the authentication process for a given transaction'
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
name: "CHECK",
|
|
153
|
-
value: "check",
|
|
154
|
-
description: "The /check endpoint can be called to verify that the Auth API integration and secret keys are valid, and that the signature is being generated properly"
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
name: "LOGO",
|
|
158
|
-
value: "logo",
|
|
159
|
-
description: "The /logo endpoint provides a programmatic way to retrieve your stored logo"
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: "PING",
|
|
163
|
-
value: "ping",
|
|
164
|
-
description: "The /ping endpoint acts as a 'liveness check' that can be called to verify that Duo is up before trying to call other Auth API endpoints"
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
name: "PREAUTH",
|
|
168
|
-
value: "preauth",
|
|
169
|
-
description: "The /preauth endpoint determines whether a user is authorized to log in, and (if so) returns the user's available authentication factors"
|
|
170
|
-
}
|
|
171
|
-
],
|
|
172
|
-
default: "auth",
|
|
173
|
-
description: "Choose an Endpoints",
|
|
174
|
-
builderHint: {
|
|
175
|
-
message: "Choose PING to check availability, PREAUTH to check user access, AUTH to start authentication, or AUTH STATUS to read an asynchronous authentication result."
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
displayName: "Identify User By",
|
|
180
|
-
name: "userIdentifier",
|
|
181
|
-
type: "resourceLocator",
|
|
182
|
-
default: { mode: "username", value: "" },
|
|
183
|
-
required: true,
|
|
184
|
-
description: "User_id: Permanent Duo-generated ID. Always points to the same user, even if their username changes. Best for stable references. username: App-level identifier (e.g., user@domain.com). Easier to use with existing systems, but may break if the username or alias changes.",
|
|
185
|
-
builderHint: {
|
|
186
|
-
message: "Use the stable Duo user ID when available; otherwise use the username known by the application."
|
|
187
|
-
},
|
|
188
|
-
modes: [
|
|
189
|
-
{
|
|
190
|
-
displayName: "Username",
|
|
191
|
-
name: "username",
|
|
192
|
-
type: "list",
|
|
193
|
-
placeholder: "Ex: John Miller"
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
displayName: "User ID",
|
|
197
|
-
name: "user_id",
|
|
198
|
-
type: "list",
|
|
199
|
-
placeholder: "Ex: DUT7R9FA3APHMTQEXHSO"
|
|
200
|
-
}
|
|
201
|
-
],
|
|
202
|
-
displayOptions: {
|
|
203
|
-
show: {
|
|
204
|
-
endpoint: ["auth", "preauth"]
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
displayName: "Transaction ID",
|
|
210
|
-
name: "txid",
|
|
211
|
-
type: "string",
|
|
212
|
-
default: "",
|
|
213
|
-
placeholder: "Ex: 56477e31-97bb-45ca-a7c0-e8d6e13c63dc",
|
|
214
|
-
description: "The transaction ID of the authentication attempt, as returned by the /auth endpoint",
|
|
215
|
-
builderHint: {
|
|
216
|
-
message: "Use the transaction ID returned by AUTH when checking an asynchronous authentication attempt."
|
|
217
|
-
},
|
|
218
|
-
displayOptions: {
|
|
219
|
-
show: {
|
|
220
|
-
endpoint: ["auth_status"]
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
displayName: "Authentication Factor",
|
|
226
|
-
name: "factor",
|
|
227
|
-
type: "options",
|
|
228
|
-
options: [
|
|
229
|
-
{
|
|
230
|
-
name: "Auto",
|
|
231
|
-
value: "auto",
|
|
232
|
-
description: "Use the out-of-band factor (push or phone) recommended by Duo as the best for the user's devices"
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
name: "Passcode",
|
|
236
|
-
value: "passcode",
|
|
237
|
-
description: "Authenticate the user with a passcode (from Duo Mobile, SMS, hardware token, or bypass code)"
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
name: "Phone Call",
|
|
241
|
-
value: "phone",
|
|
242
|
-
description: "Authenticate the user with phone callback"
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
name: "Push Notification",
|
|
246
|
-
value: "push",
|
|
247
|
-
description: "Authenticate the user with Duo Push"
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
name: "SMS Message",
|
|
251
|
-
value: "sms",
|
|
252
|
-
description: 'Send SMS passcodes, but it won\u2019t authenticate\u2014always returns "deny"; re-prompt user afterward'
|
|
253
|
-
}
|
|
254
|
-
],
|
|
255
|
-
default: "push",
|
|
256
|
-
displayOptions: {
|
|
257
|
-
show: {
|
|
258
|
-
endpoint: ["auth"]
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
required: true,
|
|
262
|
-
description: "Factor to use for authentication",
|
|
263
|
-
builderHint: {
|
|
264
|
-
message: "Use Push Notification for an approval request, or choose another factor only when the workflow requires it."
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
displayName: "Passcode",
|
|
269
|
-
name: "passcode",
|
|
270
|
-
type: "string",
|
|
271
|
-
default: "",
|
|
272
|
-
placeholder: "Ex: 123456",
|
|
273
|
-
displayOptions: {
|
|
274
|
-
show: {
|
|
275
|
-
endpoint: ["auth"],
|
|
276
|
-
factor: ["passcode"]
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
description: "Passcode entered by the user"
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
displayName: "Device",
|
|
283
|
-
name: "device",
|
|
284
|
-
type: "string",
|
|
285
|
-
default: "auto",
|
|
286
|
-
placeholder: "auto or device ID",
|
|
287
|
-
displayOptions: {
|
|
288
|
-
show: {
|
|
289
|
-
endpoint: ["auth"],
|
|
290
|
-
factor: ["auto", "push", "phone", "sms"]
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
description: "Identifies which of the user's devices this is"
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
displayName: "Push Info",
|
|
297
|
-
name: "pushinfo",
|
|
298
|
-
placeholder: "Add key/value",
|
|
299
|
-
type: "fixedCollection",
|
|
300
|
-
typeOptions: {
|
|
301
|
-
multipleValues: true
|
|
302
|
-
},
|
|
303
|
-
default: {},
|
|
304
|
-
description: "Optional key/value pairs with context for the authentication attempt, shown in Duo Mobile (e.g., from=login portal&domain=example.com), total length under 20 KB",
|
|
305
|
-
builderHint: {
|
|
306
|
-
message: "Include only non-secret context such as the event, action, and target shown to the approver."
|
|
307
|
-
},
|
|
308
|
-
displayOptions: {
|
|
309
|
-
show: {
|
|
310
|
-
endpoint: ["auth"],
|
|
311
|
-
"/factor": ["push"]
|
|
312
|
-
}
|
|
313
|
-
},
|
|
314
|
-
options: [
|
|
315
|
-
{
|
|
316
|
-
displayName: "Key-Value Pairs",
|
|
317
|
-
name: "pairs",
|
|
318
|
-
values: [
|
|
319
|
-
{
|
|
320
|
-
displayName: "Key",
|
|
321
|
-
name: "key",
|
|
322
|
-
type: "string",
|
|
323
|
-
default: ""
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
displayName: "Value",
|
|
327
|
-
name: "value",
|
|
328
|
-
type: "string",
|
|
329
|
-
default: ""
|
|
330
|
-
}
|
|
331
|
-
]
|
|
332
|
-
}
|
|
333
|
-
]
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
displayName: "Auth Optional Fields",
|
|
337
|
-
name: "authOptionalFields",
|
|
338
|
-
type: "collection",
|
|
339
|
-
placeholder: "Add Field",
|
|
340
|
-
displayOptions: {
|
|
341
|
-
show: {
|
|
342
|
-
endpoint: ["auth"]
|
|
343
|
-
}
|
|
344
|
-
},
|
|
345
|
-
default: {},
|
|
346
|
-
options: [
|
|
347
|
-
{
|
|
348
|
-
displayName: "Async",
|
|
349
|
-
name: "async",
|
|
350
|
-
type: "boolean",
|
|
351
|
-
default: true,
|
|
352
|
-
description: "Whether you enable async, your application provides this parameter with a value of true, /auth will immediately return a transaction ID and will be able to retrieve real-time status updates from the authentication process"
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
displayName: "Display Username",
|
|
356
|
-
name: "display_username",
|
|
357
|
-
type: "string",
|
|
358
|
-
default: "",
|
|
359
|
-
placeholder: "Ex: John Miller",
|
|
360
|
-
description: "String to display in Duo Mobile in place of the user's Duo username",
|
|
361
|
-
displayOptions: {
|
|
362
|
-
show: {
|
|
363
|
-
"/factor": ["push"]
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
},
|
|
367
|
-
...commonExtraAuthFields,
|
|
368
|
-
{
|
|
369
|
-
displayName: "Type",
|
|
370
|
-
name: "type",
|
|
371
|
-
type: "string",
|
|
372
|
-
default: "",
|
|
373
|
-
placeholder: "Ex: Login, Admin Access, SSH...",
|
|
374
|
-
description: "This string appears in Duo Mobile push notifications and UI. By default, Duo shows a standard phrase with the app name, but you can provide a custom string (not localized) to replace it.",
|
|
375
|
-
displayOptions: {
|
|
376
|
-
show: {
|
|
377
|
-
"/factor": ["push"]
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
]
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
displayName: "PreAuth Optional Fields",
|
|
385
|
-
name: "preAuthOptionalFields",
|
|
386
|
-
type: "collection",
|
|
387
|
-
placeholder: "Add Field",
|
|
388
|
-
displayOptions: {
|
|
389
|
-
show: {
|
|
390
|
-
endpoint: ["preauth"]
|
|
391
|
-
}
|
|
392
|
-
},
|
|
393
|
-
default: {},
|
|
394
|
-
options: [
|
|
395
|
-
{
|
|
396
|
-
displayName: "Verified Push Support?",
|
|
397
|
-
name: "clientSupportsVerifiedPush",
|
|
398
|
-
type: "boolean",
|
|
399
|
-
default: false,
|
|
400
|
-
description: "Whether set to 1 or not determines if your client supports Verified Duo Push; without it, the API assumes no support, ignores related policy, and push may be unavailable under certain risk-based restrictions"
|
|
401
|
-
},
|
|
402
|
-
...commonExtraAuthFields,
|
|
403
|
-
{
|
|
404
|
-
displayName: "Trusted Device Token",
|
|
405
|
-
name: "trustedDeviceToken",
|
|
406
|
-
type: "string",
|
|
407
|
-
typeOptions: { password: true },
|
|
408
|
-
default: "",
|
|
409
|
-
placeholder: "Ex: REkxSzP00Ld4ddEVTRZOUlYMEl8RFVVQkdJ05HwUldRRThJR1VTNE0=||1627133735|8356ef7779bb0ec4c28ca9b04dc50493c4d2e05e",
|
|
410
|
-
description: "If trusted_device_token is present and the policy allows Remembered Devices, the API returns 'allow' for the token's lifetime set by the administrator"
|
|
411
|
-
}
|
|
412
|
-
]
|
|
413
|
-
}
|
|
414
|
-
];
|
|
415
|
-
|
|
416
|
-
// nodes/DuoSecurity/V1/duoParameterMapping.ts
|
|
417
|
-
var import_n8n_node_toolkit = __toESM(require_dist());
|
|
418
|
-
var duoParameterRules = [
|
|
419
|
-
{
|
|
420
|
-
parameter: "userIdentifier",
|
|
421
|
-
transform: (value) => {
|
|
422
|
-
if (!value || typeof value !== "object") return;
|
|
423
|
-
const { mode, value: identifier } = value;
|
|
424
|
-
return mode && identifier ? { [mode]: identifier } : void 0;
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
|
-
{ parameter: "txid" },
|
|
428
|
-
{ parameter: "factor" },
|
|
429
|
-
{ parameter: "passcode" },
|
|
430
|
-
{ parameter: "device" },
|
|
431
|
-
{
|
|
432
|
-
parameter: "pushinfo",
|
|
433
|
-
transform: (value) => {
|
|
434
|
-
if (!value || typeof value !== "object") return;
|
|
435
|
-
const pairs = value.pairs;
|
|
436
|
-
if (!Array.isArray(pairs)) return;
|
|
437
|
-
const pushinfo = pairs.filter((pair) => pair.key && pair.value).map((pair) => `${pair.key}=${encodeURIComponent(pair.value)}`).join("&");
|
|
438
|
-
return pushinfo ? { pushinfo } : void 0;
|
|
439
|
-
}
|
|
440
|
-
},
|
|
441
|
-
{
|
|
442
|
-
parameter: "authOptionalFields",
|
|
443
|
-
transform: (value) => value && typeof value === "object" ? (0, import_n8n_node_toolkit.processOptionalCollections)(value) : void 0
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
parameter: "preAuthOptionalFields",
|
|
447
|
-
transform: (value) => value && typeof value === "object" ? (0, import_n8n_node_toolkit.processOptionalCollections)(value) : void 0
|
|
448
|
-
}
|
|
449
|
-
];
|
|
450
|
-
function mapDuoParameters(context, itemIndex) {
|
|
451
|
-
return (0, import_n8n_node_toolkit.mapNodeParameters)(context, itemIndex, duoParameterRules);
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// nodes/DuoSecurity/utils/duoUtils.ts
|
|
455
|
-
function sortParams(input) {
|
|
456
|
-
return Object.fromEntries(
|
|
457
|
-
Object.entries(input).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
458
|
-
);
|
|
459
|
-
}
|
|
460
|
-
function safeStringify(obj) {
|
|
461
|
-
return obj ? JSON.stringify(sortParams(obj)) : "";
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
// nodes/DuoSecurity/V1/DuoSecurityV1Base.ts
|
|
465
|
-
var DuoSecurityV1Base = class {
|
|
466
|
-
constructor(baseDescription, mode) {
|
|
467
|
-
this.icon = {
|
|
468
|
-
light: "file:duo.svg",
|
|
469
|
-
dark: "file:duo-dark.svg"
|
|
470
|
-
};
|
|
471
|
-
const isTool = mode === "tool";
|
|
472
|
-
this.description = {
|
|
473
|
-
...baseDescription,
|
|
474
|
-
displayName: isTool ? "Duo Security AI Tool" : "Duo Security",
|
|
475
|
-
name: isTool ? "duoSecurityTool" : "duoSecurity",
|
|
476
|
-
icon: { light: "file:duo.svg", dark: "file:duo-dark.svg" },
|
|
477
|
-
group: ["transform"],
|
|
478
|
-
subtitle: isTool ? "Duo Security operations for AI agents" : "Duo Security Multi-factor Authentication/Authorization",
|
|
479
|
-
version: 1,
|
|
480
|
-
description: isTool ? "Use Duo Security operations as a tool for an AI agent." : "Connects n8n workflows to Duo Security for user verification and second-factor authentication.",
|
|
481
|
-
builderHint: {
|
|
482
|
-
message: isTool ? "Use this tool to check Duo user access or start a second-factor authentication challenge when the workflow requires it." : "Use for Duo user verification, pre-authentication, Duo Push approval, or authentication status checks."
|
|
483
|
-
},
|
|
484
|
-
defaults: { name: isTool ? "Duo Security AI Tool" : "Duo Security" },
|
|
485
|
-
inputs: isTool ? [] : [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
486
|
-
outputs: isTool ? [import_n8n_workflow.NodeConnectionTypes.AiTool] : [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
487
|
-
credentials: [{ name: "duoSecurityApi", required: true }],
|
|
488
|
-
properties: duoProperties,
|
|
489
|
-
...isTool ? {
|
|
490
|
-
usableAsTool: {
|
|
491
|
-
replacements: {
|
|
492
|
-
description: "Use Duo Security to verify a user or start a second-factor authentication challenge. Use PREAUTH before AUTH when checking whether a user can authenticate. Treat only an explicit result.response.result of allow as approval; never continue after a missing, denied, expired, or failed response."
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
} : {}
|
|
496
|
-
};
|
|
497
|
-
}
|
|
498
|
-
async execute() {
|
|
499
|
-
const items = this.getInputData();
|
|
500
|
-
const returnData = [];
|
|
501
|
-
for (let i = 0; i < items.length; i++) {
|
|
502
|
-
const endpoint = this.getNodeParameter("endpoint", i);
|
|
503
|
-
const method = endpoint === "auth" || endpoint === "preauth" ? "POST" : "GET";
|
|
504
|
-
const isPost = method.toLowerCase() === "post";
|
|
505
|
-
const processedParams = mapDuoParameters(this, i);
|
|
506
|
-
const requestOptions = {
|
|
507
|
-
method,
|
|
508
|
-
url: `/auth/v2/${endpoint}`,
|
|
509
|
-
json: true,
|
|
510
|
-
body: isPost ? safeStringify(processedParams) : "",
|
|
511
|
-
qs: isPost ? {} : processedParams,
|
|
512
|
-
headers: { "Content-Type": "application/json" }
|
|
513
|
-
};
|
|
514
|
-
const response = await this.helpers.httpRequestWithAuthentication.call(
|
|
515
|
-
this,
|
|
516
|
-
"duoSecurityApi",
|
|
517
|
-
requestOptions
|
|
518
|
-
);
|
|
519
|
-
returnData.push({
|
|
520
|
-
json: { result: response },
|
|
521
|
-
pairedItem: { item: i }
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
return [returnData];
|
|
525
|
-
}
|
|
526
|
-
};
|
|
527
|
-
|
|
528
|
-
// nodes/DuoSecurity/V1/DuoSecurityToolV1.ts
|
|
529
|
-
var DuoSecurityToolV1 = class extends DuoSecurityV1Base {
|
|
530
|
-
constructor(baseDescription) {
|
|
531
|
-
super(baseDescription, "tool");
|
|
532
|
-
}
|
|
533
|
-
};
|
|
534
|
-
|
|
535
|
-
// nodes/DuoSecurity/DuoSecurityTool.node.ts
|
|
536
|
-
var DuoSecurityTool = class extends import_n8n_workflow2.VersionedNodeType {
|
|
537
|
-
constructor() {
|
|
538
|
-
const baseDescription = {
|
|
539
|
-
displayName: "Duo Security AI Tool",
|
|
540
|
-
name: "duoSecurityTool",
|
|
541
|
-
icon: "file:duo.svg",
|
|
542
|
-
group: ["transform"],
|
|
543
|
-
subtitle: "Duo Security operations for AI agents",
|
|
544
|
-
defaultVersion: 1,
|
|
545
|
-
description: "Duo Security operations exposed as an AI tool"
|
|
546
|
-
};
|
|
547
|
-
const nodeVersions = {
|
|
548
|
-
1: new DuoSecurityToolV1(baseDescription)
|
|
549
|
-
};
|
|
550
|
-
super(nodeVersions, baseDescription);
|
|
551
|
-
}
|
|
552
|
-
};
|
|
553
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
554
|
-
0 && (module.exports = {
|
|
555
|
-
DuoSecurityTool
|
|
556
|
-
});
|
|
557
|
-
//# sourceMappingURL=DuoSecurityTool.node.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../wetomate-node-toolkit/src/collections.ts", "../../../../wetomate-node-toolkit/src/parameter-mapping.ts", "../../../../wetomate-node-toolkit/src/index.ts", "../../../nodes/DuoSecurity/DuoSecurityTool.node.ts", "../../../nodes/DuoSecurity/V1/DuoSecurityV1Base.ts", "../../../nodes/DuoSecurity/V1/duoProperties.ts", "../../../nodes/DuoSecurity/V1/duoParameterMapping.ts", "../../../nodes/DuoSecurity/utils/duoUtils.ts", "../../../nodes/DuoSecurity/V1/DuoSecurityToolV1.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["exports", "processOptionalCollections", "exports", "mapNodeParameters", "exports", "import_n8n_workflow"]
|
|
6
|
-
}
|