Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions config/config_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,143 @@
]
}
}
},
"oidcAuthProvider": {
"title": "OpenID Connect AuthProvider",
"description": "OpenID Connect authentication configuration",
"type": "object",
"additionalProperties": false,
"required": [
"idpUrl",
"uniqueField",
"clientId",
"scope",
"localPublicKeyLocation",
"localPrivateKeyLocation",
"keyAlgorithm",
"issuer",
"symmetricKeyLocation"
],
"properties": {
"idpUrl": {
"description": "Base URL for identity provider endpoint",
"type": "string",
"format": "uri",
"pattern": "^https?://",
"examples": [
"https://domain.xyz/auth/realms/example"
]
},
"uniqueField": {
"description": "Name of unique field to use as user ID. Note that as per the OpenID Connect specification only sub/issuer combination is guaranteed to be stable and unique for an arbitrary issuer, though other values such as preferred_username may be usable when the team running the CARTA installation and the issuer are the same.",
"type": "string",
"examples": [
"sub",
"preferred_username"
],
"default": "sub"
},
"clientId": {
"description": "Client ID as registered with identity provider",
"type": "string",
"minLength": 1,
"examples": [
"carta"
]
},
"clientSecret": {
"description": "Client secret as registered with identity provider",
"type": "string",
"minLength": 1
},
"scope": {
"description": "Scopes to request from the OpenID Connect server",
"type": "string",
"default": "openid",
"examples": [
"openid",
"openid groups"
]
},
"userLookupTable": {
"description": "Path of user lookup table as text file in format <unique user ID> <system user>. If no user lookup is needed, this should be omitted. Example table given in `usertable.txt.stub`",
"type": "string",
"examples": [
"/etc/carta/userlookup.txt"
]
},
"groupsField": {
"description": "Name of field containing list of user roles/groups",
"type": "string",
"examples": [
"groups",
"roles"
]
},
"requiredGroup": {
"description": "Role to ensure is included among the values in groupsField",
"type": "string",
"examples": [
"carta-users",
"carta-testers"
]
},
"localPublicKeyLocation": {
"description": "Path to public key (in PEM format) used for verifying JWTs",
"type": "string",
"examples": [
"/etc/carta/carta_public.pem"
]
},
"localPrivateKeyLocation": {
"description": "Path to private key (in PEM format) used for signing JWTs",
"type": "string",
"examples": [
"/etc/carta/carta_private.pem"
]
},
"keyAlgorithm": {
"$ref": "#/definitions/keyAlgorithm",
"default": "RS256"
},
"issuer": {
"description": "Issuer field for JWT",
"type": "string",
"examples": [
"my-carta-server"
]
},
"cacheAccessTokenMinValidity": {
"description": "If previously issued an access token from upstream server with at least this many seconds of lifetime remaining, a local token with the previous token's remaining lifetime will be issued instead of performing an upstream query",
Comment thread
veggiesaurus marked this conversation as resolved.
Outdated
"type": "integer",
"default": 100
},
"symmetricKeyLocation": {
"description": "Path to symmetric key (base64-encoded) used for refresh tokens. At present this uses the A256GCM algorithm which requires 32 bytes of random data which can be generated using `openssl rand -base64 32`",
"type": "string",
"examples": [
"/etc/carta/carta_symmetric.pem"
]
},
"symmetricKeyType": {
"description": "As per options at https://www.iana.org/assignments/jose/jose.xhtml when using direct use of shared key",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"when using direct use of shared key" sounds odd. Should this be "when a shared key is used directly"?

The description also doesn't describe the option. Should this be "Type of symmetric key as per (...)"

Is the "shared key" the same thing as the "symmetric key"? Is the "shared key" qualification also needed for the location option above?

"type": "string",
"default": "A256GCM"
},
"additionalAuthParams": {
"description": "additional parameters to include in authentication requests to deal with identity providers ",
"type": "array",
"default": [],
"examples": [
[[["access_type", "offline"], ["prompt", "consent"]]]
],
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2
}
}
}
}
},
"additionalProperties": false,
Expand Down Expand Up @@ -369,6 +506,10 @@
"external": {
"description": "External AuthProvider",
"$ref": "#/definitions/externalAuthProvider"
},
"oidc": {
"description": "OpenID Connect AuthProvider",
"$ref": "#/definitions/oidcAuthProvider"
}
},
"default": {
Expand Down
122 changes: 116 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading