{"record":{"id":"a099048a5bac4210","repo":"hashicorp/vault","slug":"configuration-of-the-method-methodtype-method-i","errorCode":null,"errorMessage":"Configuration of the ${method.methodType} method is not supported by the Vault UI.","messagePattern":"Configuration of the (.+?) method is not supported by the Vault UI\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"ui/app/components/auth-config-form/config.ts","lineNumber":110,"sourceCode":"      case 'azure':\n        return this.api.auth.azureConfigureAuth(path, payload as AzureConfigureAuthRequest);\n      case 'github':\n        return this.api.auth.githubConfigure(path, payload as GithubConfigureRequest);\n      case 'gcp':\n        return this.api.auth.googleCloudConfigureAuth(path, payload as GoogleCloudConfigureAuthRequest);\n      case 'jwt':\n      case 'oidc':\n        return this.api.auth.jwtConfigure(path, payload as JwtConfigureRequest);\n      case 'kubernetes':\n        return this.api.auth.kubernetesConfigureAuth(path, payload as KubernetesConfigureAuthRequest);\n      case 'ldap':\n        return this.api.auth.ldapConfigureAuth(path, payload as LdapConfigureAuthRequest);\n      case 'okta':\n        return this.api.auth.oktaConfigure(path, payload as OktaConfigureRequest);\n      case 'radius':\n        return this.api.auth.radiusConfigure(path, payload as RadiusConfigureRequest);\n      default:\n        throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);\n    }\n  }\n\n  @task\n  @waitFor\n  *saveModel(evt: HTMLElementEvent<HTMLFormElement>) {\n    evt.preventDefault();\n    this.errorMessage = '';\n    try {\n      const { form, method } = this.args;\n      const { data } = form.toJSON();\n      yield this.configMethod(method.path, data as ConfigPayload);\n      this.router.transitionTo('vault.cluster.access.methods').followRedirects();\n      this.flashMessages.success('The configuration was saved successfully.');\n    } catch (err) {\n      const { message } = yield this.api.parseError(err);\n      this.errorMessage = message;\n    }","sourceCodeStart":92,"sourceCodeEnd":128,"githubUrl":"https://github.com/hashicorp/vault/blob/744b611b5700b3b7f82d76b4d6938a91b9989367/ui/app/components/auth-config-form/config.ts#L92-L128","documentation":"Thrown by the auth method configuration form component (ui/app/components/auth-config-form/config.ts:110). configMethod() switches over the mounted auth method's type and maps it to a generated API client call (jwt/oidc, kubernetes, ldap, okta, radius). Any methodType not covered by a case falls through to the default and throws, meaning the UI has no configuration form implementation for that auth method.","triggerScenarios":"Opening the configuration form for a mounted auth method whose methodType is outside the switch — e.g. cert, saml, approle, token, or any auth method introduced after this component was written.","commonSituations":"An enterprise-only auth method (such as SAML) is mounted and the UI routes the config screen to this generic component; an older UI running against a newer Vault server that supports more method types; tests that mount unusual auth methods.","solutions":["Configure the unsupported auth method via the Vault CLI or HTTP API instead of the UI (e.g. vault write auth/<mount>/config ...)","Upgrade the Vault UI to a version whose config form supports the methodType you mounted","If you develop on the UI, add a case to configMethod() that calls the corresponding generated API method"],"exampleFix":"// before: unsupported types throw\ncase 'radius':\n  return this.api.auth.radiusConfigureAuth(path, payload as RadiusConfigureAuthRequest);\ndefault:\n  throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);\n\n// after: map the new method to its generated API call\ncase 'radius':\n  return this.api.auth.radiusConfigureAuth(path, payload as RadiusConfigureAuthRequest);\ncase 'saml':\n  return this.api.auth.samlConfigure(path, payload as SamlConfigureRequest);\ndefault:\n  throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"const UI_CONFIGURABLE_METHODS = ['jwt', 'oidc', 'kubernetes', 'ldap', 'okta', 'radius'] as const;\ntype UiConfigurableMethod = (typeof UI_CONFIGURABLE_METHODS)[number];\nfunction isUiConfigurable(methodType: string): methodType is UiConfigurableMethod {\n  return (UI_CONFIGURABLE_METHODS as readonly string[]).includes(methodType);\n}\n\n// usage: only mount the form when the guard passes\nif (!isUiConfigurable(method.methodType)) {\n  renderCliInstructions(method.methodType); // instead of hitting the throwing default case\n}","tryCatchPattern":"try {\n  await this.configMethod(method.path, data);\n} catch (e) {\n  if (e.message.includes('is not supported by the Vault UI')) {\n    notifyUser(`Configure ${method.methodType} via the CLI instead`);\n  } else {\n    throw e;\n  }\n}","preventionTips":["Gate the generic config form behind an allowlist of supported method types instead of relying on the default case","When a new auth method lands in the API client, add its case to configMethod() in the same change","Mount enterprise/exotic auth methods with the expectation that configuration is CLI-first"],"tags":["auth-methods","ui","unsupported-operation","typescript"],"backgroundTag":null,"analyzedSha":"744b611b5700b3b7f82d76b4d6938a91b9989367","analyzedAt":"2026-08-15T14:40:29.333Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}