diff --git a/cmd/zitadel/caos_local.sh b/cmd/zitadel/caos_local.sh index 817761d14d..3c323dcb64 100755 --- a/cmd/zitadel/caos_local.sh +++ b/cmd/zitadel/caos_local.sh @@ -67,7 +67,7 @@ export ZITADEL_SHORT_CACHE_SHARED_MAXAGE=15m export ZITADEL_CONSOLE_ENV_DIR=../../console/src/assets/ #Org -export ZITADEL_DEFAULT_DOMAIN=zitadel.ch +export ZITADEL_DEFAULT_DOMAIN=localhost #Setup diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index ae890693c5..41254071f1 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -160,12 +160,12 @@ "TITLE": "Passwortlose Authentifizierungsmethoden", "DESCRIPTION": "Füge WebAuthn kompatible Authentifikatoren hinzu um dich passwortlos anzumelden.", "MANAGE_DESCRIPTION": "Verwalte die Multifaktor-Merkmale Deiner Benutzer.", - "U2F":"U2F hinzufügen", - "U2F_DIALOG_TITLE": "U2F hinzufügen", + "U2F":"Authentifikator hinzufügen", + "U2F_DIALOG_TITLE": "Authentifikator hinzufügen", "U2F_DIALOG_DESCRIPTION": "Gib einen Namen für den von dir verwendeten Login an.", "U2F_SUCCESS":"Passwordless erfolgreich erstellt!", "U2F_ERROR":"Ein Fehler ist aufgetreten!", - "U2F_NAME":"U2F Name", + "U2F_NAME":"Authentifikator Name", "TYPE": { "0":"Keine MFA definiert", "1":"OTP", diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 3af1a34913..dd79f04a8a 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -160,12 +160,12 @@ "TITLE": "Passwordless Authentication", "DESCRIPTION": "Add WebAuthn based Authentication Methods to log onto ZITADEL passwordless.", "MANAGE_DESCRIPTION": "Manage the second factor methods of your users.", - "U2F":"Add U2F", - "U2F_DIALOG_TITLE": "Verify U2F", + "U2F":"Add authenticator", + "U2F_DIALOG_TITLE": "Verify authenticator", "U2F_DIALOG_DESCRIPTION": "Enter a name for your used passwordless Login", "U2F_SUCCESS":"Passwordless Auth created successfully!", "U2F_ERROR":"An error during U2F setup occurred!", - "U2F_NAME":"U2F Name", + "U2F_NAME":"Authenticator Name", "TYPE": { "0": "No MFA defined", "1": "OTP", diff --git a/internal/api/grpc/auth/user.go b/internal/api/grpc/auth/user.go index 62ecf18f7d..f00ef7f872 100644 --- a/internal/api/grpc/auth/user.go +++ b/internal/api/grpc/auth/user.go @@ -163,6 +163,9 @@ func (s *Server) RemoveMfaOTP(ctx context.Context, _ *empty.Empty) (_ *empty.Emp func (s *Server) AddMyMfaU2F(ctx context.Context, _ *empty.Empty) (_ *auth.WebAuthNResponse, err error) { u2f, err := s.repo.AddMyMFAU2F(ctx) + if err != nil { + return nil, err + } return verifyWebAuthNFromModel(u2f), err } @@ -186,6 +189,9 @@ func (s *Server) GetMyPasswordless(ctx context.Context, _ *empty.Empty) (_ *auth func (s *Server) AddMyPasswordless(ctx context.Context, _ *empty.Empty) (_ *auth.WebAuthNResponse, err error) { u2f, err := s.repo.AddMyPasswordless(ctx) + if err != nil { + return nil, err + } return verifyWebAuthNFromModel(u2f), err } diff --git a/internal/user/repository/eventsourcing/model/web_auth_n.go b/internal/user/repository/eventsourcing/model/web_auth_n.go index afbb602192..226ac77a71 100644 --- a/internal/user/repository/eventsourcing/model/web_auth_n.go +++ b/internal/user/repository/eventsourcing/model/web_auth_n.go @@ -17,11 +17,12 @@ type WebAuthNToken struct { Challenge string `json:"challenge"` State int32 `json:"-"` - KeyID []byte `json:"keyId"` - PublicKey []byte `json:"publicKey"` - AttestationType string `json:"attestationType"` - AAGUID []byte `json:"aaguid"` - SignCount uint32 `json:"signCount"` + KeyID []byte `json:"keyId"` + PublicKey []byte `json:"publicKey"` + AttestationType string `json:"attestationType"` + AAGUID []byte `json:"aaguid"` + SignCount uint32 `json:"signCount"` + WebAuthNTokenName string `json:"webAuthNTokenName"` } type WebAuthNVerify struct { @@ -79,29 +80,31 @@ func WebAuthNsFromModel(u2fs []*model.WebAuthNToken) []*WebAuthNToken { func WebAuthNFromModel(webAuthN *model.WebAuthNToken) *WebAuthNToken { return &WebAuthNToken{ - ObjectRoot: webAuthN.ObjectRoot, - WebauthNTokenID: webAuthN.WebAuthNTokenID, - Challenge: webAuthN.Challenge, - State: int32(webAuthN.State), - KeyID: webAuthN.KeyID, - PublicKey: webAuthN.PublicKey, - AAGUID: webAuthN.AAGUID, - SignCount: webAuthN.SignCount, - AttestationType: webAuthN.AttestationType, + ObjectRoot: webAuthN.ObjectRoot, + WebauthNTokenID: webAuthN.WebAuthNTokenID, + Challenge: webAuthN.Challenge, + State: int32(webAuthN.State), + KeyID: webAuthN.KeyID, + PublicKey: webAuthN.PublicKey, + AAGUID: webAuthN.AAGUID, + SignCount: webAuthN.SignCount, + AttestationType: webAuthN.AttestationType, + WebAuthNTokenName: webAuthN.WebAuthNTokenName, } } func WebAuthNToModel(webAuthN *WebAuthNToken) *model.WebAuthNToken { return &model.WebAuthNToken{ - ObjectRoot: webAuthN.ObjectRoot, - WebAuthNTokenID: webAuthN.WebauthNTokenID, - Challenge: webAuthN.Challenge, - State: model.MFAState(webAuthN.State), - KeyID: webAuthN.KeyID, - PublicKey: webAuthN.PublicKey, - AAGUID: webAuthN.AAGUID, - SignCount: webAuthN.SignCount, - AttestationType: webAuthN.AttestationType, + ObjectRoot: webAuthN.ObjectRoot, + WebAuthNTokenID: webAuthN.WebauthNTokenID, + Challenge: webAuthN.Challenge, + State: model.MFAState(webAuthN.State), + KeyID: webAuthN.KeyID, + PublicKey: webAuthN.PublicKey, + AAGUID: webAuthN.AAGUID, + SignCount: webAuthN.SignCount, + AttestationType: webAuthN.AttestationType, + WebAuthNTokenName: webAuthN.WebAuthNTokenName, } } diff --git a/internal/user/repository/view/model/user.go b/internal/user/repository/view/model/user.go index 0d65bc108b..d98b89fdfa 100644 --- a/internal/user/repository/view/model/user.go +++ b/internal/user/repository/view/model/user.go @@ -374,7 +374,7 @@ func (u *UserView) addPasswordlessToken(event *models.Event) error { } } token.State = int32(model.MFAStateNotReady) - u.U2FTokens = append(u.U2FTokens, token) + u.PasswordlessTokens = append(u.PasswordlessTokens, token) return nil }