From 0729ce9e1a8dab9912900a01dcd0fbd892718a1a Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Tue, 31 Dec 2024 10:42:54 +0100 Subject: [PATCH] fix: passkey can't be added if `PUBLIC_APP_URL` includes a port --- backend/internal/service/jwt_service.go | 5 ++--- backend/internal/service/webauthn_service.go | 2 +- backend/internal/utils/string_util.go | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/internal/service/jwt_service.go b/backend/internal/service/jwt_service.go index e450d14..18bac17 100644 --- a/backend/internal/service/jwt_service.go +++ b/backend/internal/service/jwt_service.go @@ -12,7 +12,6 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/stonith404/pocket-id/backend/internal/common" "github.com/stonith404/pocket-id/backend/internal/model" - "github.com/stonith404/pocket-id/backend/internal/utils" "log" "math/big" "os" @@ -96,7 +95,7 @@ func (s *JwtService) GenerateAccessToken(user model.User) (string, error) { Subject: user.ID, ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Duration(sessionDurationInMinutes) * time.Minute)), IssuedAt: jwt.NewNumericDate(time.Now()), - Audience: jwt.ClaimStrings{utils.GetHostFromURL(common.EnvConfig.AppURL)}, + Audience: jwt.ClaimStrings{common.EnvConfig.AppURL}, }, IsAdmin: user.IsAdmin, } @@ -125,7 +124,7 @@ func (s *JwtService) VerifyAccessToken(tokenString string) (*AccessTokenJWTClaim return nil, errors.New("can't parse claims") } - if !slices.Contains(claims.Audience, utils.GetHostFromURL(common.EnvConfig.AppURL)) { + if !slices.Contains(claims.Audience, common.EnvConfig.AppURL) { return nil, errors.New("audience doesn't match") } return claims, nil diff --git a/backend/internal/service/webauthn_service.go b/backend/internal/service/webauthn_service.go index 1438f91..2ea51a4 100644 --- a/backend/internal/service/webauthn_service.go +++ b/backend/internal/service/webauthn_service.go @@ -23,7 +23,7 @@ type WebAuthnService struct { func NewWebAuthnService(db *gorm.DB, jwtService *JwtService, auditLogService *AuditLogService, appConfigService *AppConfigService) *WebAuthnService { webauthnConfig := &webauthn.Config{ RPDisplayName: appConfigService.DbConfig.AppName.Value, - RPID: utils.GetHostFromURL(common.EnvConfig.AppURL), + RPID: utils.GetHostnameFromURL(common.EnvConfig.AppURL), RPOrigins: []string{common.EnvConfig.AppURL}, Timeouts: webauthn.TimeoutsConfig{ Login: webauthn.TimeoutConfig{ diff --git a/backend/internal/utils/string_util.go b/backend/internal/utils/string_util.go index ff78d17..442ff9f 100644 --- a/backend/internal/utils/string_util.go +++ b/backend/internal/utils/string_util.go @@ -29,12 +29,12 @@ func GenerateRandomAlphanumericString(length int) (string, error) { return string(result), nil } -func GetHostFromURL(rawURL string) string { +func GetHostnameFromURL(rawURL string) string { parsedURL, err := url.Parse(rawURL) if err != nil { return "" } - return parsedURL.Host + return parsedURL.Hostname() } // StringPointer creates a string pointer from a string value