auth support for when DAPR_API_TOKEN env is defined

This commit is contained in:
Mark Chmarny 2020-06-12 16:03:42 -07:00
parent b310b9061f
commit 05a6fd2940
6 changed files with 18 additions and 8 deletions

View File

@ -21,7 +21,7 @@ func (c *Client) InvokeBinding(ctx context.Context, name, op string, in []byte,
Metadata: meta,
}
_, err := c.protoClient.InvokeBinding(ctx, envelop)
_, err := c.protoClient.InvokeBinding(authContext(ctx), envelop)
if err != nil {
return errors.Wrapf(err, "error invoking binding %s", name)
}

View File

@ -8,6 +8,7 @@ import (
"github.com/pkg/errors"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
pb "github.com/dapr/go-sdk/dapr/proto/runtime/v1"
)
@ -63,3 +64,12 @@ func (c *Client) Close(ctx context.Context) {
c.connection.Close()
}
}
func authContext(ctx context.Context) context.Context {
token := os.Getenv("DAPR_API_TOKEN")
if token == "" {
return ctx
}
md := metadata.Pairs("dapr-api-token", token)
return metadata.NewOutgoingContext(ctx, md)
}

View File

@ -19,7 +19,7 @@ func (c *Client) InvokeService(ctx context.Context, serviceID, method string, in
return nil, errors.New("nil method")
}
resp, err := c.protoClient.InvokeService(ctx, &pb.InvokeServiceRequest{
resp, err := c.protoClient.InvokeService(authContext(ctx), &pb.InvokeServiceRequest{
Id: serviceID,
Message: &v1.InvokeRequest{
Method: method,

View File

@ -19,7 +19,7 @@ func (c *Client) PublishEvent(ctx context.Context, topic string, in []byte) erro
Data: in,
}
_, err := c.protoClient.PublishEvent(ctx, envelop)
_, err := c.protoClient.PublishEvent(authContext(ctx), envelop)
if err != nil {
return errors.Wrapf(err, "error publishing event unto %s topic", topic)
}

View File

@ -28,7 +28,7 @@ func (c *Client) SaveState(ctx context.Context, store, key string, in []byte) er
},
}
_, err := c.protoClient.SaveState(ctx, envelop)
_, err := c.protoClient.SaveState(authContext(ctx), envelop)
if err != nil {
return errors.Wrapf(err, "error saving state into %s", store)
}
@ -42,7 +42,7 @@ func (c *Client) SaveStateJSON(ctx context.Context, store, key string, in interf
if err != nil {
return errors.Wrap(err, "error marshaling content")
}
return c.SaveState(ctx, store, key, b)
return c.SaveState(authContext(ctx), store, key, b)
}
// GetState is the message to get key-value states from specific state store
@ -58,7 +58,7 @@ func (c *Client) GetState(ctx context.Context, store, key string) (out []byte, e
Key: key,
}
result, err := c.protoClient.GetState(ctx, envelop)
result, err := c.protoClient.GetState(authContext(ctx), envelop)
if err != nil {
return nil, errors.Wrapf(err, "error getting state from %s for %s key", store, key)
}
@ -79,7 +79,7 @@ func (c *Client) DeleteState(ctx context.Context, store, key string) error {
Key: key,
}
_, err := c.protoClient.DeleteState(ctx, envelop)
_, err := c.protoClient.DeleteState(authContext(ctx), envelop)
if err != nil {
return errors.Wrapf(err, "error deleting state from %s for %s key", store, key)
}

View File

@ -47,7 +47,7 @@ func (s *server) MyMethod() string {
func (s *server) OnInvoke(ctx context.Context, in *commonv1pb.InvokeRequest) (*commonv1pb.InvokeResponse, error) {
var response string
fmt.Println(fmt.Sprintf("Got invoked with: %s", string(in.Data.Value)))
fmt.Printf("Got invoked with: %s", string(in.Data.Value))
switch in.Method {
case "MyMethod":