MCPcopy
hub / github.com/ContainerSSH/ContainerSSH / New

Function New

internal/authintegration/handler_factory.go:16–89  ·  view source on GitHub ↗

New creates a new handler that authenticates the users with passwords and public keys. goland:noinspection GoUnusedExportedFunction

(
	config config.AuthConfig,
	backend sshserver.Handler,
	logger log.Logger,
	metricsCollector metrics.Collector,
	behavior Behavior,
)

Source from the content-addressed store, hash-verified

14// New creates a new handler that authenticates the users with passwords and public keys.
15//goland:noinspection GoUnusedExportedFunction
16func New(
17 config config.AuthConfig,
18 backend sshserver.Handler,
19 logger log.Logger,
20 metricsCollector metrics.Collector,
21 behavior Behavior,
22) (sshserver.Handler, []service.Service, error) {
23 if backend == nil {
24 return nil, nil, fmt.Errorf("the backend parameter to authintegration.New cannot be nil")
25 }
26 if !behavior.validate() {
27 return nil, nil, fmt.Errorf("the behavior field contains an invalid value: %d", behavior)
28 }
29
30 var services []service.Service
31
32 passwordAuthenticator, svc, err := auth.NewPasswordAuthenticator(config.PasswordAuth, logger, metricsCollector)
33 if err != nil {
34 return nil, nil, err
35 }
36 if svc != nil {
37 services = append(services, svc)
38 }
39
40 publicKeyAuthenticator, svc, err := auth.NewPublicKeyAuthenticator(config.PublicKeyAuth, logger, metricsCollector)
41 if err != nil {
42 return nil, nil, err
43 }
44 if svc != nil {
45 services = append(services, svc)
46 }
47
48 keyboardInteractiveAuthenticator, svc, err := auth.NewKeyboardInteractiveAuthenticator(
49 config.KeyboardInteractiveAuth,
50 logger,
51 metricsCollector,
52 )
53 if err != nil {
54 return nil, nil, err
55 }
56 if svc != nil {
57 services = append(services, svc)
58 }
59
60 gssapiAuthenticator, svc, err := auth.NewGSSAPIAuthenticator(
61 config.GSSAPIAuth,
62 logger,
63 metricsCollector,
64 )
65 if err != nil {
66 return nil, nil, err
67 }
68 if svc != nil {
69 services = append(services, svc)
70 }
71
72 authorizationProvider, svc, err := auth.NewAuthorizationProvider(config.Authz, logger, metricsCollector)
73 if err != nil {

Callers 2

createAuthHandlerFunction · 0.92
startSSHServerFunction · 0.92

Calls 7

NewPasswordAuthenticatorFunction · 0.92
NewGSSAPIAuthenticatorFunction · 0.92
NewAuthorizationProviderFunction · 0.92
validateMethod · 0.80
ErrorfMethod · 0.65

Tested by 1

startSSHServerFunction · 0.74