mirror of
https://github.com/pomerium/pomerium.git
synced 2025-07-08 20:38:12 +02:00
fix redirect loop, remove user/session services, remove duplicate deleted_at fields (#1162)
* fix redirect loop, remove user/session services, remove duplicate deleted_at fields * change loop * reuse err variable * wrap errors, use cookie timeout * wrap error, duplicate if
This commit is contained in:
parent
714363fb07
commit
97f85481f8
16 changed files with 288 additions and 918 deletions
14
cache/cache.go
vendored
14
cache/cache.go
vendored
|
@ -19,16 +19,12 @@ import (
|
|||
"github.com/pomerium/pomerium/internal/urlutil"
|
||||
"github.com/pomerium/pomerium/pkg/cryptutil"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/session"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/user"
|
||||
)
|
||||
|
||||
// Cache represents the cache service. The cache service is a simple interface
|
||||
// for storing keyed blobs (bytes) of unstructured data.
|
||||
type Cache struct {
|
||||
dataBrokerServer *DataBrokerServer
|
||||
sessionServer *SessionServer
|
||||
userServer *UserServer
|
||||
manager *manager.Manager
|
||||
|
||||
localListener net.Listener
|
||||
|
@ -73,16 +69,10 @@ func New(opts config.Options) (*Cache, error) {
|
|||
|
||||
dataBrokerServer := NewDataBrokerServer(localGRPCServer, opts)
|
||||
dataBrokerClient := databroker.NewDataBrokerServiceClient(localGRPCConnection)
|
||||
sessionServer := NewSessionServer(localGRPCServer, dataBrokerClient)
|
||||
sessionClient := session.NewSessionServiceClient(localGRPCConnection)
|
||||
userServer := NewUserServer(localGRPCServer, dataBrokerClient)
|
||||
userClient := user.NewUserServiceClient(localGRPCConnection)
|
||||
|
||||
manager := manager.New(
|
||||
authenticator,
|
||||
directoryProvider,
|
||||
sessionClient,
|
||||
userClient,
|
||||
dataBrokerClient,
|
||||
manager.WithGroupRefreshInterval(opts.RefreshDirectoryInterval),
|
||||
manager.WithGroupRefreshTimeout(opts.RefreshDirectoryTimeout),
|
||||
|
@ -90,8 +80,6 @@ func New(opts config.Options) (*Cache, error) {
|
|||
|
||||
return &Cache{
|
||||
dataBrokerServer: dataBrokerServer,
|
||||
sessionServer: sessionServer,
|
||||
userServer: userServer,
|
||||
manager: manager,
|
||||
|
||||
localListener: localListener,
|
||||
|
@ -104,8 +92,6 @@ func New(opts config.Options) (*Cache, error) {
|
|||
// Register registers all the gRPC services with the given server.
|
||||
func (c *Cache) Register(grpcServer *grpc.Server) {
|
||||
databroker.RegisterDataBrokerServiceServer(grpcServer, c.dataBrokerServer)
|
||||
session.RegisterSessionServiceServer(grpcServer, c.sessionServer)
|
||||
user.RegisterUserServiceServer(grpcServer, c.userServer)
|
||||
}
|
||||
|
||||
// Run runs the cache components.
|
||||
|
|
95
cache/session.go
vendored
95
cache/session.go
vendored
|
@ -1,95 +0,0 @@
|
|||
package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/session"
|
||||
)
|
||||
|
||||
// SessionServer implements the session service interface for adding and syncing sessions.
|
||||
type SessionServer struct {
|
||||
dataBrokerClient databroker.DataBrokerServiceClient
|
||||
}
|
||||
|
||||
// NewSessionServer creates a new SessionServer.
|
||||
func NewSessionServer(grpcServer *grpc.Server, dataBrokerClient databroker.DataBrokerServiceClient) *SessionServer {
|
||||
srv := &SessionServer{
|
||||
dataBrokerClient: dataBrokerClient,
|
||||
}
|
||||
session.RegisterSessionServiceServer(grpcServer, srv)
|
||||
return srv
|
||||
}
|
||||
|
||||
// Delete deletes a session from the session server.
|
||||
func (srv *SessionServer) Delete(ctx context.Context, req *session.DeleteRequest) (*emptypb.Empty, error) {
|
||||
ctx, span := trace.StartSpan(ctx, "session.grpc.Delete")
|
||||
defer span.End()
|
||||
log.Info().
|
||||
Str("service", "session").
|
||||
Str("session_id", req.GetId()).
|
||||
Msg("delete")
|
||||
|
||||
data, err := ptypes.MarshalAny(new(session.Session))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return srv.dataBrokerClient.Delete(ctx, &databroker.DeleteRequest{
|
||||
Type: data.GetTypeUrl(),
|
||||
Id: req.GetId(),
|
||||
})
|
||||
}
|
||||
|
||||
// Add adds a session to the session server.
|
||||
func (srv *SessionServer) Add(ctx context.Context, req *session.AddRequest) (*session.AddResponse, error) {
|
||||
ctx, span := trace.StartSpan(ctx, "session.grpc.Add")
|
||||
defer span.End()
|
||||
log.Info().
|
||||
Str("service", "session").
|
||||
Str("session_id", req.GetSession().GetId()).
|
||||
Msg("add")
|
||||
|
||||
s := req.GetSession()
|
||||
|
||||
data, err := ptypes.MarshalAny(s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res, err := srv.dataBrokerClient.Set(ctx, &databroker.SetRequest{
|
||||
Type: data.GetTypeUrl(),
|
||||
Id: s.GetId(),
|
||||
Data: data,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
s.Version = res.GetServerVersion()
|
||||
|
||||
data, err = ptypes.MarshalAny(s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res, err = srv.dataBrokerClient.Set(ctx, &databroker.SetRequest{
|
||||
Type: data.GetTypeUrl(),
|
||||
Id: s.GetId(),
|
||||
Data: data,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &session.AddResponse{
|
||||
Session: req.Session,
|
||||
ServerVersion: res.GetServerVersion(),
|
||||
}, nil
|
||||
}
|
54
cache/user.go
vendored
54
cache/user.go
vendored
|
@ -1,54 +0,0 @@
|
|||
package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/user"
|
||||
)
|
||||
|
||||
// UserServer implements the user service interface for syncing users.
|
||||
type UserServer struct {
|
||||
dataBrokerClient databroker.DataBrokerServiceClient
|
||||
}
|
||||
|
||||
// NewUserServer creates a new UserServer.
|
||||
func NewUserServer(grpcServer *grpc.Server, dataBrokerClient databroker.DataBrokerServiceClient) *UserServer {
|
||||
srv := &UserServer{
|
||||
dataBrokerClient: dataBrokerClient,
|
||||
}
|
||||
user.RegisterUserServiceServer(grpcServer, srv)
|
||||
return srv
|
||||
}
|
||||
|
||||
// Add adds a user to the user server.
|
||||
func (srv *UserServer) Add(ctx context.Context, req *user.AddRequest) (*emptypb.Empty, error) {
|
||||
ctx, span := trace.StartSpan(ctx, "user.grpc.Add")
|
||||
defer span.End()
|
||||
log.Info().
|
||||
Str("service", "user").
|
||||
Str("user_id", req.GetUser().GetId()).
|
||||
Msg("add")
|
||||
|
||||
data, err := ptypes.MarshalAny(req.GetUser())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = srv.dataBrokerClient.Set(ctx, &databroker.SetRequest{
|
||||
Type: data.GetTypeUrl(),
|
||||
Id: req.GetUser().GetId(),
|
||||
Data: data,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return new(emptypb.Empty), nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue