2016-09-02 3 views
0

私は、grpcサービスにある種の機能ベースのアクセス制御を追加しようと考えていました。私の考えは、protoファイルで定義された各rpcに必要な機能を持たせ、grpcインターセプタを使用して、ユーザーが提供する機能がrpcで必要とされるものと一致するかどうかをチェックすることでした。私はいくつかの文書やチュートリアルを見てきましたが、どこから始めたらいいか分かりません。どのような指針をいただければ幸いです。Protobufへのアクセス制御の追加

答えて

1

これは、プロトタイプファイルを解析してコードやデータファイルを生成するジェネレータープラグインを作成することです。 Like​​のように。各rpcには、カスタマイズ可能なオプションがあり、thisのようなprotoファイルに追加できます。これらのオプションはprotobuf.MethodOptionsと呼ばれます。これはhereです。したがって、独自のメソッドオプションを使用して、これを使用してバリデーターまたは修飾子を生成し、次にインターセプターからバリデーターを呼び出して解決することができます。

私には違う言い方をすることができます。 マップを含むjsonまたはyamlファイルがある可能性があります。すべてのprotobufメソッドには、"/package.service/rpcMethodName"という形式の固有の名前識別子があります。あなたのようなRPCメソッドがあればそう:

syntax = "proto3"; 

package yourpackage; 

service ServiceName { 
    rpc MethodName(Request) returns (Response) {}; 
} 

をこのメソッドの一意の識別子を使用して、grpc.UnaryServerInfo.FullMethodとして、あなたのインターセプタ内で見つけること/yourpackage.ServiceName/MethodNameとしてのようになります。

あなたはFullMethodNameと必要な機能が含まれているyamlまたはjsonを介して別のマップを管理しています。次にインターセプタ内でマップを読み、メソッドに必要な機能を見つけて、目的の操作を適用します。

+0

ありがとうございます。これらは素晴らしいヒントです! – user1646637

関連する問題