feat(oauth/oidc): move token exchange from beta to GA (#11475)

# Which Problems Are Solved

This PR marks the OAuth2 Token Exchange as general available (GA).

# How the Problems Are Solved

- API:
- deprecated the feature toggle (to prevent breaking changes) in v2beta
and v2 API
- removed all related event logic and updated the projection interation
  - removed the toggle usage for token exchange
  - removed related translations
- Management Console:
  - removed the feature toggle and its translations
- Docs:
  - removed all beta labels and feature toggle notes

# Additional Changes

- removed unused `Errors.WebKey.FeatureDisabled` translations

# Additional Context

- closes #11114

---------

Co-authored-by: Marco A. <[email protected]>
This commit is contained in:
Livio Spring
2026-02-02 09:47:56 +00:00
committed by GitHub
co-authored by Marco A.
parent 2700286ae7
commit 09cf7cf0ae
80 changed files with 104 additions and 319 deletions
+13 -8
View File
@@ -28,11 +28,14 @@ message SetInstanceFeaturesRequest{
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
// Setting the field will have no effect.
optional bool oidc_token_exchange = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
repeated ImprovedPerformance improved_performance = 7 [
@@ -131,11 +134,13 @@ message GetInstanceFeaturesResponse {
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
FeatureFlag oidc_token_exchange = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
ImprovedPerformanceFeatureFlag improved_performance = 8 [
+13 -8
View File
@@ -28,11 +28,14 @@ message SetSystemFeaturesRequest{
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
// Setting the field will have no effect.
optional bool oidc_token_exchange = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
repeated ImprovedPerformance improved_performance = 7 [
@@ -111,11 +114,13 @@ message GetSystemFeaturesResponse {
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
FeatureFlag oidc_token_exchange = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
ImprovedPerformanceFeatureFlag improved_performance = 8 [
+13 -8
View File
@@ -27,11 +27,14 @@ message SetInstanceFeaturesRequest{
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
// Setting the field will have no effect.
optional bool oidc_token_exchange = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
repeated ImprovedPerformance improved_performance = 7 [
@@ -95,11 +98,13 @@ message GetInstanceFeaturesResponse {
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
FeatureFlag oidc_token_exchange = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
ImprovedPerformanceFeatureFlag improved_performance = 8 [
+13 -8
View File
@@ -27,11 +27,14 @@ message SetSystemFeaturesRequest{
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
// Setting the field will have no effect.
optional bool oidc_token_exchange = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
repeated ImprovedPerformance improved_performance = 7 [
@@ -81,11 +84,13 @@ message GetSystemFeaturesResponse {
}
];
// Deprecated: the flag has been removed and `urn:ietf:params:oauth:grant-type:token-exchange`
// grant type for the OIDC token endpoint is enabled by default.
// Token exchange can be used to request tokens with a lesser scope or impersonate other users.
// See the security policy to allow impersonation on an instance.
// This field is only kept for backward compatibility and will be removed in the next major version of Zitadel.
FeatureFlag oidc_token_exchange = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "true";
description: "Enable the experimental `urn:ietf:params:oauth:grant-type:token-exchange` grant type for the OIDC token endpoint. Token exchange can be used to request tokens with a lesser scope or impersonate other users. See the security policy to allow impersonation on an instance.";
}
deprecated = true
];
ImprovedPerformanceFeatureFlag improved_performance = 8 [