@@ -133,6 +133,7 @@ func NewServer(cfg Config) (*Server, error) {
|
||||
cfg.Logger.Named("mcp.v1"),
|
||||
cfg.Probo,
|
||||
cfg.IAM,
|
||||
cfg.TokenSecret,
|
||||
),
|
||||
slackHandler: slack_v1.NewMux(
|
||||
cfg.Logger.Named("slack.v1"),
|
||||
@@ -143,6 +144,7 @@ func NewServer(cfg Config) (*Server, error) {
|
||||
cfg.Logger.Named("connect.v1"),
|
||||
cfg.IAM,
|
||||
cfg.Cookie,
|
||||
cfg.TokenSecret,
|
||||
cfg.BaseURL,
|
||||
),
|
||||
}, nil
|
||||
|
||||
@@ -36,13 +36,13 @@ func APIKeyFromContext(ctx context.Context) *coredata.PersonalAPIKey {
|
||||
return apiKey
|
||||
}
|
||||
|
||||
func NewAPIKeyMiddleware(svc *iam.Service) func(next http.Handler) http.Handler {
|
||||
func NewAPIKeyMiddleware(svc *iam.Service, tokenSecret string) func(next http.Handler) http.Handler {
|
||||
return func(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(
|
||||
func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
tokenValue, err := securetoken.Get(r, "")
|
||||
tokenValue, err := securetoken.Get(r, tokenSecret)
|
||||
if err != nil {
|
||||
next.ServeHTTP(w, r)
|
||||
return
|
||||
|
||||
@@ -82,7 +82,7 @@ func NewMux(
|
||||
safeRedirect := &saferedirect.SafeRedirect{AllowedHost: baseURL.Host()}
|
||||
|
||||
r.Use(connect_v1.NewSessionMiddleware(iamSvc, cookieConfig))
|
||||
r.Use(connect_v1.NewAPIKeyMiddleware(iamSvc))
|
||||
r.Use(connect_v1.NewAPIKeyMiddleware(iamSvc, tokenSecret))
|
||||
|
||||
config := schema.Config{
|
||||
Resolvers: &Resolver{
|
||||
@@ -317,13 +317,6 @@ func (r *Resolver) ProboService(ctx context.Context, tenantID gid.TenantID) *pro
|
||||
|
||||
func (r *Resolver) MustAuthorize(ctx context.Context, entityID gid.GID, action iam.Action) {
|
||||
identity := connect_v1.IdentityFromContext(ctx)
|
||||
// TODO: Add API key authorization
|
||||
// apiKey := connect_v1.APIKeyFromContext(ctx)
|
||||
|
||||
// var credentialID *gid.GID
|
||||
// if apiKey != nil {
|
||||
// credentialID = &apiKey.ID
|
||||
// }
|
||||
|
||||
err := r.iam.Authorizer.Authorize(
|
||||
ctx,
|
||||
|
||||
@@ -20,7 +20,7 @@ func (r *Resolver) ProboService(ctx context.Context, objectID gid.GID) *probo.Te
|
||||
return r.proboSvc.WithTenant(objectID.TenantID())
|
||||
}
|
||||
|
||||
func NewMux(logger *log.Logger, proboSvc *probo.Service, iamSvc *iam.Service) *chi.Mux {
|
||||
func NewMux(logger *log.Logger, proboSvc *probo.Service, iamSvc *iam.Service, tokenSecret string) *chi.Mux {
|
||||
logger = logger.Named("mcp.v1")
|
||||
|
||||
logger.Info("initializing MCP server")
|
||||
@@ -52,7 +52,7 @@ func NewMux(logger *log.Logger, proboSvc *probo.Service, iamSvc *iam.Service) *c
|
||||
)
|
||||
|
||||
r := chi.NewMux()
|
||||
r.Use(connect_v1.NewAPIKeyMiddleware(iamSvc))
|
||||
r.Use(connect_v1.NewAPIKeyMiddleware(iamSvc, tokenSecret))
|
||||
r.Handle("/", RequireAPIKeyHandler(logger, handler))
|
||||
|
||||
logger.Info("MCP server initialized successfully")
|
||||
|
||||
@@ -47,6 +47,7 @@ type Config struct {
|
||||
Trust *trust.Service
|
||||
Slack *slack.Service
|
||||
Cookie securecookie.Config
|
||||
TokenSecret string
|
||||
ConnectorRegistry *connector.ConnectorRegistry
|
||||
Agent *agents.Agent
|
||||
CustomDomainCname string
|
||||
@@ -72,6 +73,7 @@ func NewServer(cfg Config) (*Server, error) {
|
||||
Trust: cfg.Trust,
|
||||
Slack: cfg.Slack,
|
||||
Cookie: cfg.Cookie,
|
||||
TokenSecret: cfg.TokenSecret,
|
||||
ConnectorRegistry: cfg.ConnectorRegistry,
|
||||
CustomDomainCname: cfg.CustomDomainCname,
|
||||
Logger: cfg.Logger.Named("api"),
|
||||
|
||||
Reference in New Issue
Block a user