Golang での安全なネットワーク通信のための gRPC の使用

Michael Jordan
リリース: 2023-07-18 22:46:55
オリジナル
835 人が閲覧しました

Golang での安全なネットワーク通信に gRPC を使用する

近年、クラウド コンピューティング、モノのインターネット、その他のテクノロジの急速な発展に伴い、ネットワーク通信の重要性がますます高まっています。このため、開発者は効率的で安全な通信方法を探すようになります。 gRPC は、高性能で非同期のオープンソース RPC フレームワークとして徐々に普及してきています。この記事では、Golang で安全なネットワーク通信に gRPC を使用する方法を紹介し、関連するコード例を添付します。

  1. gRPC と Protobuf のインストール

まず、gRPC と Protobuf をローカルにインストールする必要があります。次のコマンドでインストールできます:

$ go get -u github.com/golang/protobuf/protoc-gen-go $ go get -u google.golang.org/grpc
ログイン後にコピー
  1. サービス インターフェイスの定義

次に、gRPC サービスを定義する必要があります。これには、Protobuf を使用してメッセージ形式を定義する必要があります。そしてサービスインターフェース。単純なログイン サービスを作成するとします。例を以下に示します。

syntax = "proto3"; message LoginRequest { string username = 1; string password = 2; } message LoginResponse { bool success = 1; string token = 2; } service AuthService { rpc Login(LoginRequest) returns (LoginResponse); }
ログイン後にコピー

上記のコードをauth.protoとして保存します。

  1. コードの生成

次のコマンドを使用して Protobuf を Golang コードにコンパイルします:

$ protoc --go_out=plugins=grpc:. auth.proto
ログイン後にコピー

このコマンドを実行すると、現在のディレクトリに生成されます。auth.pb.goファイル。

  1. サービスの実装

次に、サービス コードを記述する必要があります。まず、対応するパッケージをインポートします:

package main import ( "context" "log" "net" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) // ...
ログイン後にコピー

通信のセキュリティを確保するために、gRPC によって提供される認証情報パッケージを使用します。次に、AuthServiceサービス インターフェイスを実装する必要があります。

type authService struct{} func (a *authService) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginResponse, error) { // 处理登录请求 // ... return &pb.LoginResponse{ Success: true, Token: "YOUR_AUTH_TOKEN", }, nil }
ログイン後にコピー

上記のコードでは、ログイン要求を処理し、成功した応答を返すLoginメソッドを実装します。 。

次に、gRPC サーバーを作成し、実装したサービスを登録する必要があります。

func main() { lis, err := net.Listen("tcp", ":8080") if err != nil { log.Fatalf("failed to listen: %v", err) } // 加载TLS证书 creds, err := credentials.NewServerTLSFromFile("cert.pem", "key.pem") if err != nil { log.Fatalf("failed to load TLS credentials: %v", err) } // 创建gRPC服务器 server := grpc.NewServer(grpc.Creds(creds)) // 注册服务 pb.RegisterAuthServiceServer(server, &authService{}) log.Println("gRPC server is running at :8080") err = server.Serve(lis) if err != nil { log.Fatalf("failed to start gRPC server: %v", err) } }
ログイン後にコピー

上記のコードでは、最初に暗号化通信用の TLS 証明書を読み込みます。次に、gRPC サーバーを作成し、実装したauthServiceサービスを登録しました。

  1. クライアント呼び出し

最後に、サービスを呼び出すクライアントを作成する必要があります。まず、CA によって発行されたルート証明書をロードする必要があります。

func main() { // 加载根证书 creds, err := credentials.NewClientTLSFromFile("ca.pem", "") if err != nil { log.Fatalf("failed to load CA root certificates: %v", err) } // 创建与服务器的连接 conn, err := grpc.Dial("localhost:8080", grpc.WithTransportCredentials(creds)) if err != nil { log.Fatalf("failed to dial server: %v", err) } defer conn.Close() client := pb.NewAuthServiceClient(conn) // 调用登录服务 resp, err := client.Login(context.TODO(), &pb.LoginRequest{ Username: "your_username", Password: "your_password", }) if err != nil { log.Fatalf("failed to login: %v", err) } log.Printf("Login response: %v", resp) }
ログイン後にコピー

上記のコードでは、まず CA ルート証明書をロードして、サーバーとの安全な接続を確立します。次に、AuthServiceサービスのLoginメソッドを呼び出し、ログイン要求のユーザー名とパスワードを渡します。

これまでに、安全なネットワーク通信に gRPC を使用する作業が完了しました。 gRPCが提供する認証情報パッケージを利用することで、TLS暗号化通信を簡単に実装できます。実際のアプリケーションでは、ニーズに応じてこの基本的な実装をさらに拡張および変更できます。

概要

この記事では、Golang で安全なネットワーク通信に gRPC を使用する方法を紹介します。 gRPC と Protobuf のインストールについて学び、サービス インターフェイスを定義し、対応するコードを生成し、サーバーとクライアントの実装コードを作成し、安全な TLS 通信を実行する方法を示しました。この記事が、開発プロセス中に gRPC をより便利に使用して、高性能で安全なネットワーク アプリケーションを構築するのに役立つことを願っています。

以上がGolang での安全なネットワーク通信のための gRPC の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!