-
Notifications
You must be signed in to change notification settings - Fork 8
/
example.toml
576 lines (486 loc) · 18.8 KB
/
example.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
#
# Example TOML configuration file for use with the authentication service.
#
# When running the authentication service via systemd or `npm start`, create a
# file named config.toml in this directory, using this file as an example. Note
# that config.toml will only be processed if a .env file is not present.
#
# See https://www.perforce.com/manuals/helix-auth-svc/ for documentation on the
# available settings in the authentication service.
#
# The syntax for TOML is defined here: https://toml.io/
#
# Note that the names of the settings in a TOML file are typically lowercased
# rather than uppercased, but either will work. The nested property names in
# tables like logging and auth_providers should also be in lowercase with
# underscores (_) separating the words in the name.
#
# If set to 'true' then the routes for the administrative web interface will be
# enabled, and admin_username and admin_passwd_file will be used to authenticate
# an administrative user when accessing the web interface.
#
# admin_enabled = false
# The user name that must entered in the login form to access the administrative
# web interface. Alternatively, admin_p4_auth can be used to authenticate using
# Helix Core Server.
#
# admin_username = 'perforce'
# The file that contains password for the admin account named by admin_username.
# If this is not set, the administrative interface will effectively be disabled.
# As with admin_username, admin_p4_auth can be used as an alternative.
#
# admin_passwd_file = undefined
# If set to any value, the web interface will authenticate against the Helix
# Core Server instance identified by the p4port setting, and the user must have
# a maximum permission of `super`. The admin_username and admin_passwd_file
# settings are ignored when admin_p4_auth is in effect.
#
# admin_p4_auth = undefined
# An array of tables containing the configuration for multiple identity
# providers. See the documentation for examples and all of the available
# property names. Note that an array of tables of indicated by the double
# brackets around the table name.
#
# [[auth_providers]]
# issuer_uri = 'https://oidc.example.com'
# client_id = 'client-id'
# client_secret = 'client-secret'
#
# [[auth_providers]]
# sp_entity_id = 'urn:example:sp'
# want_assertion_signed = false
# metadata_url = 'https://saml.example.com'
# Path of certificate authority file for service to use when verifying client
# certificates, in particular the Helix Server loginhook extension.
#
ca_cert_file = 'certs/ca.crt'
# HTTP Bearer authentication token for allowing access to the SCIM endpoint.
#
bearer_token = 'keyboard cat'
# Path of a file containing the plain text form of the bearer token. Use this
# instead of bearer_token to avoid having the shared secret exposed in the
# configuration.
#
# bearer_token_file = undefined
# The Origin value for CORS requests to the REST API. Defaults to the service
# base URI as computed from SVC_BASE_URI, PORT, and PROTOCOL.
#
# cors_origin = undefined
# The client identifier as provided by the OIDC identity provider.
#
# oidc_client_id = undefined
# File containing the OIDC client secret value. Use this instead of
# oidc_client_secret to avoid having the password exposed in the configuration.
#
# oidc_client_secret_file = undefined
# The client secret as provided by the OIDC identity provider.
#
# oidc_client_secret = undefined
# Public key of the certificate used when initiating an authentication request
# with an OIDC provider that supports private key JWT. If supported by the IdP,
# the public/private key files can be used instead of the "client secret" value.
#
# oidc_client_cert_file = undefined
# The private key that corresponds to CERT_FILE.
#
# oidc_client_key_file = undefined
# The OIDC provider issuer URL.
#
# oidc_issuer_uri = undefined
# Algorithm used by the OIDC issuer when signing the id token. The default value
# is RS256.
#
# oidc_token_signing_algo = 'RS256'
# Specify the OAuth code challenge method to be used with the OpenID identity
# provider. Permitted values include 'S256' and 'plain'. If unset, the value
# will be determined from the issuer metadata.
#
# oidc_code_challenge_method = undefined
# Set oidc_select_account to true to have the `prompt` OAuth parameter set to
# include 'select_account', which should cause the OIDC identity provider to
# prompt the user to select an account.
#
# oidc_select_account = false
# Set oidc_max_age to an integer to require the user to authenticate if their
# session is older than oidc_max_age seconds. This may or may not be honored by
# your identity provider; testing is encouraged.
#
# oidc_max_age = undefined
# URL of IdP Single Sign-On service.
#
# saml_idp_sso_url = undefined
# URL of IdP Single Log-Out service.
#
# saml_idp_slo_url = undefined
# The entity identifier (entityID) for the Helix Authentication Service.
#
# saml_sp_entity_id = 'https://has.example.com'
# Public key of the certificate used by HAS when connecting to the IdP, and when
# responding to HTTPS requests from clients.
#
# Renamed from sp_cert_file, which will take effect if CERT_FILE is not defined.
#
cert_file = 'certs/server.crt'
# The private key that corresponds to CERT_FILE.
#
# Renamed from sp_key_file, which will take effect if key_file is not defined.
#
key_file = 'certs/server.key'
# The authentication service base URL visible to end users. See the
# documentation for an explanation of how this setting is used to determine the
# port and protocol that the service will use.
#
# If not set, this value will be `localhost` with the scheme set by protocol and
# the port number set by port (or http://localhost:3000 if those are not set).
#
# svc_base_uri = undefined
# Name of the user that the service will setuid after binding to the port given
# in svc_base_uri (either explicitly or implicitly) or in port. This allows the
# service to bind to a low port (<1024) and then switch to a less privileged
# user for security purposes. See also svc_group.
#
# Changing this setting may require restarting the service.
#
# svc_user = undefined
# Name of the group that the service will setgid after binding to the port given
# in svc_base_uri (either explicitly or implicitly) or in port. See also svc_user.
#
# Changing this setting may require restarting the service.
#
# svc_group = undefined
# Define the IP address upon which the service will listen for requests.
#
# Changing this setting may require restarting the service.
#
# By default, Node.js will bind to the unspecified address of '0.0.0.0' if using
# IPv4 and '::' if using IPv6.
#
# bind_address = undefined
# Alternative to ca_cert_file that specifies a directory containing certificates
# of multiple authorities that authorize client requests.
#
# ca_cert_path = undefined
# Specify a name or pattern to match against the Common Name in the client
# certificate used to acquire the user profile data. Multiple values can be
# provided, separated by commas and wrapped in square brackets ([cn1,cn2,cn3]).
#
# client_cert_cn = undefined
# Specify a SHA256 fingerprint of the client certificate used to acquire the
# user profile data. Multiple values can be provided, separated by commas and
# wrapped in square brackets ([fp1,fp2,fp3]).
#
# client_cert_fp = undefined
# Name of the HTTP header, if any, that contains the base64 encoded client
# certificate. This will be used to validate the client rather than using the
# TLS certificate associated with the underlying connection.
#
# client_cert_header = undefined
# Set to any value to enable debug logging in the service (writes to the
# console). The logging setting overrides this setting.
#
# Changing this setting may require restarting the service.
#
# debug = undefined
# Set to any value to enable detailed logging of reverse proxy details for OIDC
# and SAML login requests. Requires setting either debug or logging to enable
# debug logging.
#
# debug_proxy = undefined
# Set to any value to enable detailed logging of SCIM requests. Requires setting
# either debug or logging to enable debug logging.
#
# debug_scim = undefined
# The default authentication protocol to use. Can be oidc or saml.
#
# Will default to 'saml' if one of the SAML IdP settings are configured, or
# 'oidc' if oidc_issuer_uri is set, otherwise defaults to 'saml'.
#
# default_protocol = undefined
# If set to a non-empty value, will cause the service to require the user to
# authenticate, even if the user is already authenticated. This overrides any
# protocol specific settings, such as oidc_max_age and saml_force_authn, or
# their maxAge and forceAuthn equivalents in auth_providers.
#
# force_authn = undefined
# If set to any value, will prompt the user in the browser before proceeding to
# the configured identity provider. This is provided as a means to prevent
# phishing attacks in which a user is sent a link to authenticate.
#
# prompt_for_authorization = undefined
# Public key of the certificate used by HAS when connecting to the SAML IdP, and
# when servicing SAML authentication requests from other applications (such as
# Swarm). If this setting is not defined, then CERT_FILE will be used.
#
# saml_cert_file = undefined
# The private key that corresponds to saml_cert_file.
#
# If this setting is not defined, then key_file will be used.
#
# saml_key_file = undefined
# Path of the file containing the public certificate of the identity provider,
# used to validate signatures of incoming SAML responses.
#
# idp_cert_file = undefined
# Tables that define SAML service providers that will be connecting to the
# authentication service. Note that the SAML entity identifiers should be
# wrapped in single-quotes (') to avoid interpretation by the TOML parser.
#
# [idp_config.'urn:swarm-example:sp']
# acs_url = 'https://swarm.example.com/api/v10/session'
#
# [idp_config.'http://hth.example.com/account/saml/hth/metadata']
# acs_url = 'https://hth.example.com/account/saml/hth/consume'
#
# [idp_config.'urn:swarm-201?.*:sp']
# acs_url = 'https://swarm.example.com/login'
#
# [idp_config.'urn:swarm-group:sp']
# acs_urls = [
# 'http://swarm.example.com/chicago/api/v10/session',
# 'http://swarm.example.com/tokyo/api/v10/session'
# ]
#
# [idp_config.'urn:swarm-cluster:sp']
# acs_url_re = 'https://swarm\.example\.com/[^/]+/api/v10/session'
# This value is added to the login URL as a query parameter named 'instanceId'
# which can be used with a rule-based reverse proxy to achieve session affinity
# without relying on browser cookies.
#
# instance_id = 'none'
# Table defining the logging configuration. Use "logging = none" to disable logging.
#
# Changing this setting may require restarting the service.
#
# [logging]
# level = 'info'
# transport = 'file'
# [logging.file]
# filename = 'auth-svc.log'
# maxsize = 1048576
# maxfiles = 4
#
# Logging configuration specific to the user provisioning feature must be nested
# within a table named 'scim' so that it may be configured appropriately.
#
# [logging.scim]
# level = 'info'
# transport = 'file'
# format = 'json'
# [logging.scim.file]
# filename = 'provisioning.log'
# maxsize = 1048576
# maxfiles = 4
# How long in seconds to wait for user to successfully authenticate.
#
# login_timeout = 60
# Passphrase to be used to decrypt the private key given in key_file
# or pfx_file, if the private key is encrypted.
#
# key_passphrase = undefined
# File containing the passphrase to be used to decrypt the private key given in
# key_file or pfx_file, if the private key is encrypted.
#
# key_passphrase_file = undefined
# PKCS#12 formatted file containing the public and private key for the TLS/SSL
# certificate to be used by the service. Supercedes the CERT_FILE and
# key_file settings, if this setting is provided.
#
# pfx_file = undefined
# Override the port number in svc_base_uri if running behind a reverse proxy.
#
# If svc_base_uri is not set, then this value will default to 3000.
#
# port = undefined
# Override the protocol in svc_base_uri if running behind a reverse proxy.
#
# If svc_base_uri is not set, then this value will default to 'http'.
#
# protocol = undefined
# The URL of a redis server which will be used to cache session data.
#
# redis_url = undefined
# Table that defines the configuration for use with Redis Sentinel. See
# sentinel.config.cjs for an example. Available options are documented at
# https://github.com/luin/ioredis (note that the original names are in
# "camelCase" while here they are camel_case instead, either will work).
#
# Changing this setting may require restarting the service.
#
# [sentinel_config]
# name = 'mymaster'
# sentinel_password = 'keyboard cat'
# sentinels = [
# { host = '192.168.56.31', port = 26379 },
# { host = '192.168.56.32', port = 26379 },
# { host = '192.168.56.33', port = 26379 }
# ]
#
# [sentinel_config.tls]
# cert = 'containers/redis/client.crt'
# key = 'containers/redis/client.key'
# ca = ['containers/redis/ca.crt']
# reject_unauthorized = false
#
# [sentinel_config.sentinel_tls]
# cert = 'containers/redis/client.crt'
# key = 'containers/redis/client.key'
# ca = ['containers/redis/ca.crt']
# reject_unauthorized = false
# Time to live for cached requests and user profile data, in seconds. Defaults
# to five minutes (300 seconds). This applies to both the in-memory cache as
# well as the Redis-based cache.
#
# cache_ttl = 300
# Public key of the certificate used by HAS when connecting to Redis, if the
# redis_url starts with "rediss://" (note the extra 's'). If not set, falls back
# to the CERT_FILE setting, and in turn default for that setting.
#
# redis_cert_file = undefined
# The private key that corresponds to redis_cert_file.
#
# redis_key_file = undefined
# The authn context defines the method by which the user will authenticate with
# the IdP.
#
# saml_authn_context = 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport'
# If set to a non-empty value, do not request a specific authentication context.
# This is known to help when authenticating against Active Directory servers.
#
# saml_disable_context = undefined
# The entity identifier for the identity provider.
#
# saml_idp_entity_id = undefined
# URL of the IdP metadata configuration in XML format.
#
# saml_idp_metadata_url = undefined
# Path to an XML file containing the identity provider metadata, an alternative
# to specifying a URL in the saml_idp_metadata_url setting.
#
# saml_idp_metadata_file = undefined
# Name of the property in the user profile to be used if nameID is missing,
# which is likely to be the case when using another authentication protocol
# (such as OIDC) with the identity provider (such as Okta).
#
# saml_nameid_field = undefined
# Specify the format of the NameID value, if necessary.
#
# saml_nameid_format = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified'
# Service provider audience value for AudienceRestriction assertions.
#
# saml_sp_audience = undefined
# If set to 'false', the SAML client library will not require that the SAML
# assertion is signed. The library will require that either the assertion or the
# response is signed regardless of the settings.
#
# saml_want_assertion_signed = true
# If set to 'false', the SAML client library will not require that the SAML
# response is signed. The library will require that either the assertion or the
# response is signed regardless of the settings.
#
# saml_want_response_signed = true
# Like force_authn but affects SAML authentication only.
#
# saml_force_authn = undefined
# Password used for encrypting the in-memory session data.
#
# session_secret = 'keyboard cat'
# The algorithm used to sign the requests.
#
# sp_key_algo = 'sha256'
# Time to live for JSON web tokens created by the service, in seconds.
# Defaults to one hour (3600 seconds).
#
# token_ttl = 3600
# To configure HAS to trust a reverse proxy for terminating SSL connections,
# specify the address of the proxy here.
#
# c.f. https://expressjs.com/en/guide/behind-proxies.html
#
# trust_proxy = undefined
# The 'P4PORT' for connecting to Helix Core Server for SCIM support.
#
# p4port = undefined
# The Perforce user with administrative access to manage users and groups.
#
# p4user = undefined
# The password or ticket for the Perforce user.
#
# p4passwd = undefined
# The path to the file containing the Perforce tickets.
#
# p4tickets = undefined
# The path to the Perforce trust file.
#
# p4trust = undefined
# Specify the URI that provides the JSON Web Key Sets used to validate an JSON
# Web Token that was issued by the issuer identified in the oauth_issuer
# setting.
#
# oauth_jwks_uri = undefined
# The algorithm used to sign and encrypt the JSON Web Token.
#
# oauth_algorithm = undefined
# Specify the key identifier of the key used to sign the JSON Web Token. This is
# optional and provides an alternative to trusting the `kid` property in the
# token header.
#
# oauth_jwks_keyid = undefined
# Specify the path to the public key used to sign the JSON Web Token. This is
# optional and provides an alternative to using oauth_jwks_uri to retrieve the
# signing key from the issuer.
#
# oauth_signing_key_file = undefined
# The "audience" value that will be compared to the `aud` field of the JSON Web
# Token to ensure that the token is valid for this service. This setting is
# optional but recommended.
#
# oauth_audience = undefined
# The issuer that provided the JSON Web Token to the client, to be compared to
# the `iss` field of the JSON Web Token to ensure that it is from a trusted
# source. This setting is optional but recommended.
#
# oauth_issuer = undefined
# The "tenant identifier" that can be used to further restrict access to clients
# that have been granted permission to use this service. This setting is
# optional but recommended.
#
# oauth_tenant_id = undefined
# If set to 'true' then the routes for the REST API related to validation will
# be enabled. In particular, the route /validate/swarm can be used to validate
# Swarm configuration with respect to SAML integration.
#
# validate_enabled = false
# If set to 'true' (the default) then the /status route will be enabled.
#
# status_enabled = true
# If set to true, the user provisioning feature will allow the client to rename
# user accounts, which normally can be very detrimental.
#
# allow_user_rename = false
#
# User provisioning configuration that supports multiple cloud service providers
# with one or more Helix Core servers. See the documentation for details on the
# configuration and usage.
#
# [provisioning]
# [[provisioning.providers]]
# bearer_token_file = "feline-token.txt"
# domain = "feline"
# [[provisioning.providers]]
# bearer_token_file = "canine-token.txt"
# domain = "canine"
# [[provisioning.servers]]
# p4port = "ssl:chicago:1666"
# p4user = "super"
# p4passwd = "2E7092CC2CA6BCAC74EB364BF4C4AD99"
# domains = [ "feline", "canine" ]
# leader = [ "canine" ]
# p4tickets = ".p4tickets"
# p4trust = ".p4trust"
# [[provisioning.servers]]
# p4port = "ssl:tokyo:1666"
# p4user = "super"
# p4passwd = "C8478F3F32B62A84731ADDB5A2443E68"
# domains = [ "canine" ]
# p4tickets = ".p4tickets"
# p4trust = ".p4trust"