Skip to content

Commit 10fea5e

Browse files
authored
refactor(server): extract the interactive auth flow into an authflow package (#4915)
Signed-off-by: maksim.nabokikh <max.nabokih@gmail.com>
1 parent 1e03fe0 commit 10fea5e

68 files changed

Lines changed: 4488 additions & 3452 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/dex/logger.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"os"
88
"strings"
99

10-
"github.com/dexidp/dex/server"
10+
"github.com/dexidp/dex/server/reqctx"
1111
)
1212

1313
var logFormats = []string{"json", "text"}
@@ -49,12 +49,12 @@ func (h requestContextHandler) Enabled(ctx context.Context, level slog.Level) bo
4949
}
5050

5151
func (h requestContextHandler) Handle(ctx context.Context, record slog.Record) error {
52-
if v, ok := ctx.Value(server.RequestKeyRemoteIP).(string); ok {
53-
record.AddAttrs(slog.String(string(server.RequestKeyRemoteIP), v))
52+
if v, ok := ctx.Value(reqctx.RequestKeyRemoteIP).(string); ok {
53+
record.AddAttrs(slog.String(string(reqctx.RequestKeyRemoteIP), v))
5454
}
5555

56-
if v, ok := ctx.Value(server.RequestKeyRequestID).(string); ok {
57-
record.AddAttrs(slog.String(string(server.RequestKeyRequestID), v))
56+
if v, ok := ctx.Value(reqctx.RequestKeyRequestID).(string); ok {
57+
record.AddAttrs(slog.String(string(reqctx.RequestKeyRequestID), v))
5858
}
5959

6060
return h.handler.Handle(ctx, record)

cmd/dex/serve.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ import (
3939
"github.com/dexidp/dex/pkg/featureflags"
4040
"github.com/dexidp/dex/server"
4141
"github.com/dexidp/dex/server/apiserver"
42+
"github.com/dexidp/dex/server/authflow"
4243
"github.com/dexidp/dex/server/connectors"
44+
"github.com/dexidp/dex/server/mfa"
45+
"github.com/dexidp/dex/server/session"
4346
"github.com/dexidp/dex/server/signer"
4447
"github.com/dexidp/dex/server/tokens"
4548
"github.com/dexidp/dex/storage"
@@ -371,7 +374,7 @@ func runServe(options serveOptions) error {
371374
SkipApprovalScreen: c.OAuth2.SkipApprovalScreen,
372375
AlwaysShowLoginScreen: c.OAuth2.AlwaysShowLoginScreen,
373376
PasswordConnector: c.OAuth2.PasswordConnector,
374-
PKCE: server.PKCEConfig{
377+
PKCE: authflow.PKCEConfig{
375378
Enforce: c.OAuth2.PKCE.Enforce,
376379
CodeChallengeMethodsSupported: c.OAuth2.PKCE.CodeChallengeMethodsSupported,
377380
},
@@ -779,8 +782,8 @@ func recordBuildInfo() {
779782
buildInfo.WithLabelValues(version, runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)).Set(1)
780783
}
781784

782-
func parseSessionConfig(s *Sessions) (*server.SessionConfig, error) {
783-
sc := &server.SessionConfig{
785+
func parseSessionConfig(s *Sessions) (*session.Config, error) {
786+
sc := &session.Config{
784787
CookieName: "dex_session",
785788
AbsoluteLifetime: 24 * time.Hour,
786789
ValidIfNotUsedFor: 1 * time.Hour,
@@ -835,12 +838,12 @@ func parseSessionConfig(s *Sessions) (*server.SessionConfig, error) {
835838
return sc, nil
836839
}
837840

838-
func buildMFAProviders(authenticators []MFAAuthenticator, issuerURL string, logger *slog.Logger) map[string]server.MFAProvider {
841+
func buildMFAProviders(authenticators []MFAAuthenticator, issuerURL string, logger *slog.Logger) map[string]mfa.Provider {
839842
if len(authenticators) == 0 {
840843
return nil
841844
}
842845

843-
providers := make(map[string]server.MFAProvider, len(authenticators))
846+
providers := make(map[string]mfa.Provider, len(authenticators))
844847
for _, auth := range authenticators {
845848
switch auth.Type {
846849
case "TOTP":
@@ -849,15 +852,15 @@ func buildMFAProviders(authenticators []MFAAuthenticator, issuerURL string, logg
849852
logger.Error("failed to parse TOTP config", "id", auth.ID, "err", err)
850853
continue
851854
}
852-
providers[auth.ID] = server.NewTOTPProvider(cfg.Issuer, auth.ConnectorTypes)
855+
providers[auth.ID] = mfa.NewTOTPProvider(cfg.Issuer, auth.ConnectorTypes)
853856
logger.Info("MFA authenticator configured", "id", auth.ID, "type", auth.Type)
854857
case "WebAuthn":
855858
var cfg WebAuthnConfig
856859
if err := json.Unmarshal(auth.Config, &cfg); err != nil {
857860
logger.Error("failed to parse WebAuthn config", "id", auth.ID, "err", err)
858861
continue
859862
}
860-
provider, err := server.NewWebAuthnProvider(cfg.RPDisplayName, cfg.RPID, cfg.RPOrigins,
863+
provider, err := mfa.NewWebAuthnProvider(cfg.RPDisplayName, cfg.RPID, cfg.RPOrigins,
861864
cfg.AttestationPreference, cfg.Timeout, issuerURL, auth.ConnectorTypes)
862865
if err != nil {
863866
logger.Error("failed to create WebAuthn provider", "id", auth.ID, "err", err)

server/approval.go

Lines changed: 0 additions & 297 deletions
This file was deleted.

0 commit comments

Comments
 (0)