feat(v3alpha): web key resource (#8262)

# Which Problems Are Solved

Implement a new API service that allows management of OIDC signing web
keys.
This allows users to manage rotation of the instance level keys. which
are currently managed based on expiry.

The API accepts the generation of the following key types and
parameters:

- RSA keys with 2048, 3072 or 4096 bit in size and:
  - Signing with SHA-256 (RS256)
  - Signing with SHA-384 (RS384)
  - Signing with SHA-512 (RS512)
- ECDSA keys with
  - P256 curve
  - P384 curve
  - P512 curve
- ED25519 keys

# How the Problems Are Solved

Keys are serialized for storage using the JSON web key format from the
`jose` library. This is the format that will be used by OIDC for
signing, verification and publication.

Each instance can have a number of key pairs. All existing public keys
are meant to be used for token verification and publication the keys
endpoint. Keys can be activated and the active private key is meant to
sign new tokens. There is always exactly 1 active signing key:

1. When the first key for an instance is generated, it is automatically
activated.
2. Activation of the next key automatically deactivates the previously
active key.
3. Keys cannot be manually deactivated from the API
4. Active keys cannot be deleted

# Additional Changes

- Query methods that later will be used by the OIDC package are already
implemented. Preparation for #8031
- Fix indentation in french translation for instance event
- Move user_schema translations to consistent positions in all
translation files

# Additional Context

- Closes #8030
- Part of #7809

---------

Co-authored-by: Elio Bischof <elio@zitadel.com>
This commit is contained in:
Tim Möhlmann
2024-08-14 17:18:14 +03:00
committed by GitHub
parent e2e1100124
commit 64a3bb3149
91 changed files with 5133 additions and 256 deletions

View File

@@ -586,6 +586,13 @@ Errors:
NotForAPI: Les jetons usurpés d'identité ne sont pas autorisés pour l'API
Impersonation:
PolicyDisabled: L'usurpation d'identité est désactivée dans la politique de sécurité de l'instance
WebKey:
ActiveDelete: Impossible de supprimer la clé Web active
Config: Configuration de clé Web non valide
Duplicate: L'ID de clé Web n'est pas unique
FeatureDisabled: Fonctionnalité de clé Web désactivée
NoActive: Aucune clé Web active trouvée
NotFound: Clé Web introuvable
AggregateTypes:
action: Action
@@ -609,6 +616,7 @@ AggregateTypes:
restrictions: Restrictions
system: Système
session: Session
web_key: Clé Web
EventTypes:
execution:
@@ -1171,140 +1179,146 @@ EventTypes:
deactivated: Action désactivée
reactivated: Action réactivée
removed: Action supprimée
instance:
added: Instance ajoutée
changed: Instance modifiée
customtext:
removed: Texte personnalisé supprimé
set: Ensemble de texte personnalisé
template:
removed: Modèle de texte personnalisé supprimé
default:
language:
set: Langue par défaut définie
org:
set: Ensemble d'organisation par défaut
domain:
added: Domaine ajouté
primary:
set: Ensemble de domaines principal
removed: Domaine supprimé
iam:
console:
set: Ensemble d'applications Console ZITADEL
project:
set: ZITADEL project set
mail:
template:
added: Modèle de courrier électronique ajouté
changed: Modèle d'e-mail modifié
text:
added: Texte de l'e-mail ajouté
changed: Le texte de l'e-mail a été modifié
member:
added: Membre de l'instance ajouté
changed: Membre de l'instance modifié
removed: Membre de l'instance supprimé
cascade:
removed: Cascade de membres de l'instance supprimée
notification:
provider:
debug:
fileadded: Fournisseur de notification de débogage de fichiers ajouté
filechanged: Le fournisseur de notification de débogage de fichier a été modifié
fileremoved: Fournisseur de notification de débogage de fichier supprimé
logadded: Fournisseur de notification de débogage de journal ajouté
logchanged: Le fournisseur de notification de débogage du journal a été modifié
logremoved: Fournisseur de notification de débogage du journal supprimé
oidc:
settings:
added: Paramètres OIDC ajoutés
changed: Paramètres OIDC modifiés
policy:
domain:
added: Politique de domaine ajoutée
changed: Politique de domaine modifiée
label:
activated: Politique d'étiquetage activée
added: Politique d'étiquetage ajoutée
assets:
removed: L'élément de la stratégie d'étiquette a été supprimé
changed: Politique d'étiquetage modifiée
font:
added: Police ajoutée à la stratégie d'étiquette
removed: Police supprimée de la stratégie relative aux étiquettes
icon:
added: Icône ajoutée à la politique d'étiquetage
removed: Icône supprimée des règles relatives aux étiquettes
dark:
added: Icône ajoutée à la politique d'étiquette sombre
removed: Icône supprimée de la politique relative aux étiquettes sombres
logo:
added: Logo ajouté à la politique d'étiquetage
removed: Logo supprimé de la politique relative aux étiquettes
dark:
added: Logo ajouté à la politique relative aux étiquettes sombres
removed: Logo supprimé de la politique relative aux étiquettes sombres
lockout:
added: Politique de verrouillage ajoutée
changed: La politique de verrouillage a été modifiée
login:
added: Politique de connexion ajoutée
changed: Politique de connexion modifiée
idpprovider:
added: Fournisseur d'identité ajouté à la politique de connexion
cascade:
removed: Cascade de fournisseurs d'identité supprimée de la stratégie de connexion
removed: Fournisseur d'identité supprimé de la stratégie de connexion
multifactor:
added: Multifactor ajouté à la politique de connexion
removed: Multifactor supprimé de la politique de connexion
secondfactor:
added: Deuxième facteur ajouté à la politique de connexion
removed: Deuxième facteur supprimé de la politique de connexion
password:
age:
added: Politique d'âge du mot de passe ajoutée
changed: La politique relative à l'âge du mot de passe a été modifiée
complexity:
added: Politique de complexité des mots de passe ajoutée
changed: Politique de complexité des mots de passe supprimée
privacy:
added: Politique de confidentialité ajoutée
changed: Politique de confidentialité modifiée
security:
set: Ensemble de règles de sécurité
removed: Instance removed
secret:
generator:
added: Générateur de secrets ajouté
changed: Le générateur de secrets a changé
removed: Générateur de secrets supprimé
sms:
configtwilio:
activated: Configuration SMS Twilio activée
added: Configuration SMS Twilio ajoutée
changed: La configuration des SMS Twilio a été modifiée
deactivated: Configuration SMS Twilio désactivée
removed: Configuration SMS Twilio supprimée
token:
changed: Jeton de configuration SMS Twilio modifié
smtp:
config:
added: Configuration SMTP ajoutée
changed: Configuration SMTP modifiée
activated: Configuration SMTP activée
deactivated: Configuration SMTP désactivée
password:
changed: Mot de passe de configuration SMTP modifié
removed: Configuration SMTP supprimée
user_schema:
created: Schéma utilisateur créé
updated: Schéma utilisateur mis à jour
deactivated: Schéma utilisateur désactivé
reactivated: Schéma utilisateur réactivé
deleted: Schéma utilisateur supprimé
instance:
added: Instance ajoutée
changed: Instance modifiée
customtext:
removed: Texte personnalisé supprimé
set: Ensemble de texte personnalisé
template:
removed: Modèle de texte personnalisé supprimé
default:
language:
set: Langue par défaut définie
org:
set: Ensemble d'organisation par défaut
domain:
added: Domaine ajouté
primary:
set: Ensemble de domaines principal
removed: Domaine supprimé
iam:
console:
set: Ensemble d'applications Console ZITADEL
project:
set: ZITADEL project set
mail:
template:
added: Modèle de courrier électronique ajouté
changed: Modèle d'e-mail modifié
text:
added: Texte de l'e-mail ajouté
changed: Le texte de l'e-mail a été modifié
member:
added: Membre de l'instance ajouté
changed: Membre de l'instance modifié
removed: Membre de l'instance supprimé
cascade:
removed: Cascade de membres de l'instance supprimée
notification:
provider:
debug:
fileadded: Fournisseur de notification de débogage de fichiers ajouté
filechanged: Le fournisseur de notification de débogage de fichier a été modifié
fileremoved: Fournisseur de notification de débogage de fichier supprimé
logadded: Fournisseur de notification de débogage de journal ajouté
logchanged: Le fournisseur de notification de débogage du journal a été modifié
logremoved: Fournisseur de notification de débogage du journal supprimé
oidc:
settings:
added: Paramètres OIDC ajoutés
changed: Paramètres OIDC modifiés
policy:
domain:
added: Politique de domaine ajoutée
changed: Politique de domaine modifiée
label:
activated: Politique d'étiquetage activée
added: Politique d'étiquetage ajoutée
assets:
removed: L'élément de la stratégie d'étiquette a été supprimé
changed: Politique d'étiquetage modifiée
font:
added: Police ajoutée à la stratégie d'étiquette
removed: Police supprimée de la stratégie relative aux étiquettes
icon:
added: Icône ajoutée à la politique d'étiquetage
removed: Icône supprimée des règles relatives aux étiquettes
dark:
added: Icône ajoutée à la politique d'étiquette sombre
removed: Icône supprimée de la politique relative aux étiquettes sombres
logo:
added: Logo ajouté à la politique d'étiquetage
removed: Logo supprimé de la politique relative aux étiquettes
dark:
added: Logo ajouté à la politique relative aux étiquettes sombres
removed: Logo supprimé de la politique relative aux étiquettes sombres
lockout:
added: Politique de verrouillage ajoutée
changed: La politique de verrouillage a été modifiée
login:
added: Politique de connexion ajoutée
changed: Politique de connexion modifiée
idpprovider:
added: Fournisseur d'identité ajouté à la politique de connexion
cascade:
removed: Cascade de fournisseurs d'identité supprimée de la stratégie de connexion
removed: Fournisseur d'identité supprimé de la stratégie de connexion
multifactor:
added: Multifactor ajouté à la politique de connexion
removed: Multifactor supprimé de la politique de connexion
secondfactor:
added: Deuxième facteur ajouté à la politique de connexion
removed: Deuxième facteur supprimé de la politique de connexion
password:
age:
added: Politique d'âge du mot de passe ajoutée
changed: La politique relative à l'âge du mot de passe a été modifiée
complexity:
added: Politique de complexité des mots de passe ajoutée
changed: Politique de complexité des mots de passe supprimée
privacy:
added: Politique de confidentialité ajoutée
changed: Politique de confidentialité modifiée
security:
set: Ensemble de règles de sécurité
web_key:
added: Clé Web ajoutée
activated: Clé Web activée
deactivated: Clé Web désactivée
removed: Clé Web supprimée
removed: Instance removed
secret:
generator:
added: Générateur de secrets ajouté
changed: Le générateur de secrets a changé
removed: Générateur de secrets supprimé
sms:
configtwilio:
activated: Configuration SMS Twilio activée
added: Configuration SMS Twilio ajoutée
changed: La configuration des SMS Twilio a été modifiée
deactivated: Configuration SMS Twilio désactivée
removed: Configuration SMS Twilio supprimée
token:
changed: Jeton de configuration SMS Twilio modifié
smtp:
config:
added: Configuration SMTP ajoutée
changed: Configuration SMTP modifiée
activated: Configuration SMTP activée
deactivated: Configuration SMTP désactivée
password:
changed: Mot de passe de configuration SMTP modifié
removed: Configuration SMTP supprimée
Application:
OIDC:
UnsupportedVersion: Votre version de l'OIDC n'est pas prise en charge