Skip to main content

Toolsets security

Toolsets connect DIAL to MCP servers, and many MCP servers need users to sign in with OAuth. These static settings set how DIAL Core runs that sign-in and acts as an OAuth-protected resource for MCP clients, and how it encrypts the credentials it stores for toolsets. Toolsets themselves are dynamic configuration; see Toolsets. This page is for platform engineers who connect authenticated MCP servers.

OAuth sign-in​

SettingDefaultDescription
toolsets.security.allowedRedirectUris[]The redirect URIs clients can give during OAuth sign-in. A URI is accepted only if it is listed here or equals the toolset's own redirect_uri. For dynamic client registration, every URI in this list is registered with the authorization server. Required when more than one client can start a sign-in, such as DIAL Chat and DIAL Admin, because a toolset can pin only one redirect_uri of its own.
toolsets.security.authorizationServers—The authorization server URLs trusted to issue access tokens for MCP clients.
toolsets.security.resourceSchemahttpsThe URL scheme of the resource server, used to build the resource identifier for token validation as defined in RFC 9728.
toolsets.security.resourceHost—The public, fully qualified host name of this resource server, for example dial.example.com. Used to build the resource identifier for token validation per RFC 9728. When unset, the host is taken from the incoming request.
toolsets.security.scopesSupported—The OAuth 2.0 scope values used in authorization requests for access to this protected resource.

Key management​

Core encrypts toolset credentials with a content encryption key (CEK), which a key management service (KMS) protects.

SettingDefaultDescription
toolsets.security.kms.providerunencryptedThe KMS provider: aws, azure, gcp, or unencrypted.
toolsets.security.kms.keyId—The KMS key used for encryption.
toolsets.security.kms.region—The region of the KMS. Required for aws.
toolsets.security.kms.encryptionAlgorithm—The encryption algorithm. Required for azure; see the Azure key wrap algorithms. The default for aws is SYMMETRIC_DEFAULT; see the AWS Encrypt API.
toolsets.security.kms.cache.enabledtrueWhether the CEK cache is on.
toolsets.security.kms.cache.maxSize10000The maximum number of cached CEKs.
toolsets.security.kms.cache.expiration600000How long a cached CEK is kept, in milliseconds.
warning

The default KMS provider is unencrypted. Choose aws, azure, or gcp for production.

Content encryption​

SettingDefaultDescription
toolsets.security.encryption.algorithmAESThe content encryption algorithm. Other algorithms the JCE provider supports can be used.
toolsets.security.encryption.keySize256The key size in bits. For AES: 128, 192, or 256, depending on the algorithm and provider policy.
toolsets.security.encryption.cipherTransformationAES/GCM/NoPaddingThe cipher transformation: algorithm, mode, and padding. Must match the algorithm.
toolsets.security.encryption.ivLengthBytes12The length of the initialization vector in bytes. NIST recommends 12 bytes (96 bits) for AES-GCM.
toolsets.security.encryption.gcmTagLengthBits128The authentication tag length in bits for GCM mode. NIST recommends 128 bits.

Example​

{
"toolsets": {
"security": {
"allowedRedirectUris": [
"https://chat.example.com/toolsets/callback",
"https://admin.example.com/toolsets/callback"
],
"resourceHost": "dial.example.com",
"kms": {
"provider": "aws",
"keyId": "<KMS_KEY_ARN>",
"region": "eu-west-1"
}
}
}
}

Further reading​