1 | type Cloudflare = { |
2 | token: string; |
3 | email: string; |
4 | key: string; |
5 | }; |
6 | |
7 | * Add an Access identity provider |
8 | * Adds a new identity provider to Access. |
9 | */ |
10 | export async function main( |
11 | auth: Cloudflare, |
12 | identifier: string, |
13 | body: |
14 | | ({ |
15 | config: { [k: string]: unknown }; |
16 | id?: string; |
17 | name: string; |
18 | scim_config?: { |
19 | enabled?: boolean; |
20 | group_member_deprovision?: boolean; |
21 | seat_deprovision?: boolean; |
22 | secret?: string; |
23 | user_deprovision?: boolean; |
24 | [k: string]: unknown; |
25 | }; |
26 | type: string; |
27 | [k: string]: unknown; |
28 | } & { |
29 | config?: { |
30 | client_id?: string; |
31 | client_secret?: string; |
32 | [k: string]: unknown; |
33 | } & { |
34 | conditional_access_enabled?: boolean; |
35 | directory_id?: string; |
36 | support_groups?: boolean; |
37 | [k: string]: unknown; |
38 | }; |
39 | [k: string]: unknown; |
40 | }) |
41 | | ({ |
42 | config: { [k: string]: unknown }; |
43 | id?: string; |
44 | name: string; |
45 | scim_config?: { |
46 | enabled?: boolean; |
47 | group_member_deprovision?: boolean; |
48 | seat_deprovision?: boolean; |
49 | secret?: string; |
50 | user_deprovision?: boolean; |
51 | [k: string]: unknown; |
52 | }; |
53 | type: string; |
54 | [k: string]: unknown; |
55 | } & { |
56 | config?: { |
57 | client_id?: string; |
58 | client_secret?: string; |
59 | [k: string]: unknown; |
60 | } & { |
61 | centrify_account?: string; |
62 | centrify_app_id?: string; |
63 | [k: string]: unknown; |
64 | }; |
65 | [k: string]: unknown; |
66 | }) |
67 | | ({ |
68 | config: { [k: string]: unknown }; |
69 | id?: string; |
70 | name: string; |
71 | scim_config?: { |
72 | enabled?: boolean; |
73 | group_member_deprovision?: boolean; |
74 | seat_deprovision?: boolean; |
75 | secret?: string; |
76 | user_deprovision?: boolean; |
77 | [k: string]: unknown; |
78 | }; |
79 | type: string; |
80 | [k: string]: unknown; |
81 | } & { |
82 | config?: { |
83 | client_id?: string; |
84 | client_secret?: string; |
85 | [k: string]: unknown; |
86 | }; |
87 | [k: string]: unknown; |
88 | }) |
89 | | ({ |
90 | config: { [k: string]: unknown }; |
91 | id?: string; |
92 | name: string; |
93 | scim_config?: { |
94 | enabled?: boolean; |
95 | group_member_deprovision?: boolean; |
96 | seat_deprovision?: boolean; |
97 | secret?: string; |
98 | user_deprovision?: boolean; |
99 | [k: string]: unknown; |
100 | }; |
101 | type: string; |
102 | [k: string]: unknown; |
103 | } & { |
104 | config?: { |
105 | client_id?: string; |
106 | client_secret?: string; |
107 | [k: string]: unknown; |
108 | }; |
109 | [k: string]: unknown; |
110 | }) |
111 | | ({ |
112 | config: { [k: string]: unknown }; |
113 | id?: string; |
114 | name: string; |
115 | scim_config?: { |
116 | enabled?: boolean; |
117 | group_member_deprovision?: boolean; |
118 | seat_deprovision?: boolean; |
119 | secret?: string; |
120 | user_deprovision?: boolean; |
121 | [k: string]: unknown; |
122 | }; |
123 | type: string; |
124 | [k: string]: unknown; |
125 | } & { |
126 | config?: { |
127 | client_id?: string; |
128 | client_secret?: string; |
129 | [k: string]: unknown; |
130 | }; |
131 | [k: string]: unknown; |
132 | }) |
133 | | ({ |
134 | config: { [k: string]: unknown }; |
135 | id?: string; |
136 | name: string; |
137 | scim_config?: { |
138 | enabled?: boolean; |
139 | group_member_deprovision?: boolean; |
140 | seat_deprovision?: boolean; |
141 | secret?: string; |
142 | user_deprovision?: boolean; |
143 | [k: string]: unknown; |
144 | }; |
145 | type: string; |
146 | [k: string]: unknown; |
147 | } & { |
148 | config?: { |
149 | client_id?: string; |
150 | client_secret?: string; |
151 | [k: string]: unknown; |
152 | } & { apps_domain?: string; [k: string]: unknown }; |
153 | [k: string]: unknown; |
154 | }) |
155 | | ({ |
156 | config: { [k: string]: unknown }; |
157 | id?: string; |
158 | name: string; |
159 | scim_config?: { |
160 | enabled?: boolean; |
161 | group_member_deprovision?: boolean; |
162 | seat_deprovision?: boolean; |
163 | secret?: string; |
164 | user_deprovision?: boolean; |
165 | [k: string]: unknown; |
166 | }; |
167 | type: string; |
168 | [k: string]: unknown; |
169 | } & { |
170 | config?: { |
171 | client_id?: string; |
172 | client_secret?: string; |
173 | [k: string]: unknown; |
174 | }; |
175 | [k: string]: unknown; |
176 | }) |
177 | | ({ |
178 | config: { [k: string]: unknown }; |
179 | id?: string; |
180 | name: string; |
181 | scim_config?: { |
182 | enabled?: boolean; |
183 | group_member_deprovision?: boolean; |
184 | seat_deprovision?: boolean; |
185 | secret?: string; |
186 | user_deprovision?: boolean; |
187 | [k: string]: unknown; |
188 | }; |
189 | type: string; |
190 | [k: string]: unknown; |
191 | } & { |
192 | config?: { |
193 | client_id?: string; |
194 | client_secret?: string; |
195 | [k: string]: unknown; |
196 | } & { |
197 | auth_url?: string; |
198 | certs_url?: string; |
199 | claims?: string[]; |
200 | scopes?: string[]; |
201 | token_url?: string; |
202 | [k: string]: unknown; |
203 | }; |
204 | [k: string]: unknown; |
205 | }) |
206 | | ({ |
207 | config: { [k: string]: unknown }; |
208 | id?: string; |
209 | name: string; |
210 | scim_config?: { |
211 | enabled?: boolean; |
212 | group_member_deprovision?: boolean; |
213 | seat_deprovision?: boolean; |
214 | secret?: string; |
215 | user_deprovision?: boolean; |
216 | [k: string]: unknown; |
217 | }; |
218 | type: string; |
219 | [k: string]: unknown; |
220 | } & { |
221 | config?: { |
222 | client_id?: string; |
223 | client_secret?: string; |
224 | [k: string]: unknown; |
225 | } & { okta_account?: string; [k: string]: unknown }; |
226 | [k: string]: unknown; |
227 | }) |
228 | | ({ |
229 | config: { [k: string]: unknown }; |
230 | id?: string; |
231 | name: string; |
232 | scim_config?: { |
233 | enabled?: boolean; |
234 | group_member_deprovision?: boolean; |
235 | seat_deprovision?: boolean; |
236 | secret?: string; |
237 | user_deprovision?: boolean; |
238 | [k: string]: unknown; |
239 | }; |
240 | type: string; |
241 | [k: string]: unknown; |
242 | } & { |
243 | config?: { |
244 | client_id?: string; |
245 | client_secret?: string; |
246 | [k: string]: unknown; |
247 | } & { onelogin_account?: string; [k: string]: unknown }; |
248 | [k: string]: unknown; |
249 | }) |
250 | | ({ |
251 | config: { [k: string]: unknown }; |
252 | id?: string; |
253 | name: string; |
254 | scim_config?: { |
255 | enabled?: boolean; |
256 | group_member_deprovision?: boolean; |
257 | seat_deprovision?: boolean; |
258 | secret?: string; |
259 | user_deprovision?: boolean; |
260 | [k: string]: unknown; |
261 | }; |
262 | type: string; |
263 | [k: string]: unknown; |
264 | } & { |
265 | config?: { |
266 | client_id?: string; |
267 | client_secret?: string; |
268 | [k: string]: unknown; |
269 | } & { ping_env_id?: string; [k: string]: unknown }; |
270 | [k: string]: unknown; |
271 | }) |
272 | | ({ |
273 | config: { [k: string]: unknown }; |
274 | id?: string; |
275 | name: string; |
276 | scim_config?: { |
277 | enabled?: boolean; |
278 | group_member_deprovision?: boolean; |
279 | seat_deprovision?: boolean; |
280 | secret?: string; |
281 | user_deprovision?: boolean; |
282 | [k: string]: unknown; |
283 | }; |
284 | type: string; |
285 | [k: string]: unknown; |
286 | } & { |
287 | config?: { |
288 | attributes?: string[]; |
289 | email_attribute_name?: string; |
290 | header_attributes?: { |
291 | attribute_name?: string; |
292 | header_name?: string; |
293 | [k: string]: unknown; |
294 | }[]; |
295 | idp_public_certs?: string[]; |
296 | issuer_url?: string; |
297 | sign_request?: boolean; |
298 | sso_target_url?: string; |
299 | [k: string]: unknown; |
300 | }; |
301 | [k: string]: unknown; |
302 | }) |
303 | | ({ |
304 | config: { [k: string]: unknown }; |
305 | id?: string; |
306 | name: string; |
307 | scim_config?: { |
308 | enabled?: boolean; |
309 | group_member_deprovision?: boolean; |
310 | seat_deprovision?: boolean; |
311 | secret?: string; |
312 | user_deprovision?: boolean; |
313 | [k: string]: unknown; |
314 | }; |
315 | type: string; |
316 | [k: string]: unknown; |
317 | } & { |
318 | config?: { |
319 | client_id?: string; |
320 | client_secret?: string; |
321 | [k: string]: unknown; |
322 | }; |
323 | [k: string]: unknown; |
324 | }) |
325 | ) { |
326 | const url = new URL( |
327 | `https://api.cloudflare.com/client/v4/zones/${identifier}/access/identity_providers` |
328 | ); |
329 |
|
330 | const response = await fetch(url, { |
331 | method: "POST", |
332 | headers: { |
333 | "X-AUTH-EMAIL": auth.email, |
334 | "X-AUTH-KEY": auth.key, |
335 | "Content-Type": "application/json", |
336 | Authorization: "Bearer " + auth.token, |
337 | }, |
338 | body: JSON.stringify(body), |
339 | }); |
340 | if (!response.ok) { |
341 | const text = await response.text(); |
342 | throw new Error(`${response.status} ${text}`); |
343 | } |
344 | return await response.json(); |
345 | } |
346 |
|