diff options
| author | Matthieu Pignolet <m@mpgn.dev> | 2025-03-09 16:48:28 +0400 |
|---|---|---|
| committer | Matthieu Pignolet <m@mpgn.dev> | 2025-03-09 16:48:28 +0400 |
| commit | 1e6f70ba08701bd7edfa1c28cceffbab0ed5e547 (patch) | |
| tree | 75907d575bef6d39831f06c48e58eb3d0249b950 | |
| parent | eb5d2162fa4815338eeb8d716bfb1302c3863d2b (diff) | |
adding a wip `GetSPNEGOProvider` method in the AutheliaCtx struct
| -rw-r--r-- | internal/middlewares/authelia_context.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/internal/middlewares/authelia_context.go b/internal/middlewares/authelia_context.go index 06587f05c..c0d345c92 100644 --- a/internal/middlewares/authelia_context.go +++ b/internal/middlewares/authelia_context.go @@ -14,6 +14,10 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/sirupsen/logrus" "github.com/valyala/fasthttp" + "gopkg.in/jcmturner/gokrb5.v7/keytab" + "gopkg.in/jcmturner/gokrb5.v7/service" + "gopkg.in/jcmturner/gokrb5.v7/spnego" + "gopkg.in/jcmturner/gokrb5.v7/types" "github.com/authelia/authelia/v4/internal/clock" "github.com/authelia/authelia/v4/internal/configuration/schema" @@ -672,6 +676,21 @@ func (ctx *AutheliaCtx) GetProviders() (providers Providers) { return ctx.Providers } +func (ctx *AutheliaCtx) GetSPNEGOProvider() (spnegoService *spnego.SPNEGO, err error) { + // todo: load kt in context + kt := &keytab.Keytab{} + + host, err := types.GetHostAddress(ctx.RemoteAddr().String()) + + if err == nil { + spnegoService = spnego.SPNEGOService(kt, service.ClientAddress(host)) + return + } else { + spnegoService = spnego.SPNEGOService(kt) + return + } +} + func (ctx *AutheliaCtx) GetWebAuthnProvider() (w *webauthn.WebAuthn, err error) { var ( origin *url.URL |
