summaryrefslogtreecommitdiff
path: root/internal/middlewares/authelia_context.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/middlewares/authelia_context.go')
-rw-r--r--internal/middlewares/authelia_context.go19
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