From f9c8066e2d0a342a8298715d4beb0d82bffbb30b Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Fri, 21 Jan 2022 17:45:01 +0100 Subject: [PATCH] Implement token validation & identity decoding for websockets --- app/boot_levels.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/boot_levels.go b/app/boot_levels.go index c938395eb..6921b3463 100644 --- a/app/boot_levels.go +++ b/app/boot_levels.go @@ -41,6 +41,7 @@ import ( sysService "github.com/cortezaproject/corteza-server/system/service" sysEvent "github.com/cortezaproject/corteza-server/system/service/event" "github.com/cortezaproject/corteza-server/system/types" + "github.com/lestrrat-go/jwx/jwt" "go.uber.org/zap" gomail "gopkg.in/mail.v2" ) @@ -382,9 +383,18 @@ func (app *CortezaApp) InitServices(ctx context.Context) (err error) { app.WsServer = websocket.Server( app.Log, app.Opt.Websocket, - func(ctx context.Context, s string) (auth.Identifiable, error) { - //auth.TokenIssuer.Validate(ctx, []byte(s)) - return nil, nil + func(ctx context.Context, s string) (_ auth.Identifiable, err error) { + var token jwt.Token + + if token, err = jwt.Parse([]byte(s)); err != nil { + return + } + + if err = auth.TokenIssuer.Validate(ctx, token); err != nil { + return + } + + return auth.IdentityFromToken(token), nil }, )