mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
feat: add separate max token lifetime for administrators (#18267)
# Add separate token lifetime limits for administrators This PR introduces a new configuration option `--max-admin-token-lifetime` that allows administrators to create API tokens with longer lifetimes than regular users. By default, administrators can create tokens with a lifetime of up to 7 days (168 hours), while the existing `--max-token-lifetime` setting continues to apply to regular users. The implementation: - Adds a new `MaximumAdminTokenDuration` field to the session configuration - Modifies the token validation logic to check the user's role and apply the appropriate lifetime limit - Updates the token configuration endpoint to return the correct maximum lifetime based on the user's role - Adds tests to verify that administrators can create tokens with longer and shorter lifetimes - Updates documentation and help text to reflect the new option This change allows organizations to grant administrators extended token lifetimes while maintaining tighter security controls for regular users. Fixes #17395
This commit is contained in:
@ -468,6 +468,8 @@ type SessionLifetime struct {
|
||||
DefaultTokenDuration serpent.Duration `json:"default_token_lifetime,omitempty" typescript:",notnull"`
|
||||
|
||||
MaximumTokenDuration serpent.Duration `json:"max_token_lifetime,omitempty" typescript:",notnull"`
|
||||
|
||||
MaximumAdminTokenDuration serpent.Duration `json:"max_admin_token_lifetime,omitempty" typescript:",notnull"`
|
||||
}
|
||||
|
||||
type DERP struct {
|
||||
@ -2340,6 +2342,17 @@ func (c *DeploymentValues) Options() serpent.OptionSet {
|
||||
YAML: "maxTokenLifetime",
|
||||
Annotations: serpent.Annotations{}.Mark(annotationFormatDuration, "true"),
|
||||
},
|
||||
{
|
||||
Name: "Maximum Admin Token Lifetime",
|
||||
Description: "The maximum lifetime duration administrators can specify when creating an API token.",
|
||||
Flag: "max-admin-token-lifetime",
|
||||
Env: "CODER_MAX_ADMIN_TOKEN_LIFETIME",
|
||||
Default: (7 * 24 * time.Hour).String(),
|
||||
Value: &c.Sessions.MaximumAdminTokenDuration,
|
||||
Group: &deploymentGroupNetworkingHTTP,
|
||||
YAML: "maxAdminTokenLifetime",
|
||||
Annotations: serpent.Annotations{}.Mark(annotationFormatDuration, "true"),
|
||||
},
|
||||
{
|
||||
Name: "Default Token Lifetime",
|
||||
Description: "The default lifetime duration for API tokens. This value is used when creating a token without specifying a duration, such as when authenticating the CLI or an IDE plugin.",
|
||||
|
Reference in New Issue
Block a user