gpt4 book ai didi

ssl - 使用 TLS 从 Go 客户端进行 gRPC 调用 - GCP 云功能

转载 作者:行者123 更新时间:2023-12-04 22:39:35 24 4
gpt4 key购买 nike

我正在开发一些需要使用 gRPC 与我的后端通信的不同 GCP 云功能。后端服务在 TLS 后面加密,并且只能通过它访问(没有 TLS 就无法调用 API)。服务器按预期工作得非常好,我有一个 UI 也调用相同的 API,并且这些 API 工作得非常好,因此服务器设置正确。
鉴于此设置,我正在努力弄清楚如何通过 gRPC 从我的 GCP Cloud Functions 调用我的后端 API。我知道我可以调用grpc.Dial("some_endpoint", grpc.WithTransportCredentials(<credentials>)) ,但是我不知道如何获得 credentials传递给 grpc.WithTransportCredentials方法。
我不确定您可能还需要什么其他信息,但无论是什么,我都会很乐意提供。

最佳答案

你可以引用这个gRPC authentication mechanisms指南提供了有关受支持的身份验证机制的示例,例如 SSL/TLS 集成、ALTS 和基于 token 的 Google 身份验证。
示例实现:

  • 无加密或认证
  • 客户

  • conn, _ := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
    // error handling omitted
    client := pb.NewGreeterClient(conn)
    // ...

  • 服务器

  • s := grpc.NewServer()
    lis, _ := net.Listen("tcp", "localhost:50051")
    // error handling omitted
    s.Serve(lis)

  • 使用服务器身份验证 SSL/TLS
  • 客户

  • creds, _ := credentials.NewClientTLSFromFile(certFile, "")
    conn, _ := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))
    // error handling omitted
    client := pb.NewGreeterClient(conn)
    // ...

  • 服务器

  • creds, _ := credentials.NewServerTLSFromFile(certFile, keyFile)
    s := grpc.NewServer(grpc.Creds(creds))
    lis, _ := net.Listen("tcp", "localhost:50051")
    // error handling omitted
    s.Serve(lis)

  • 使用 Google 服务帐号进行身份验证

  • pool, _ := x509.SystemCertPool()
    // error handling omitted
    creds := credentials.NewClientTLSFromCert(pool, "")
    perRPC, _ := oauth.NewServiceAccountFromFile("service-account.json", scope)
    conn, _ := grpc.Dial(
    "greeter.googleapis.com",
    grpc.WithTransportCredentials(creds),
    grpc.WithPerRPCCredentials(perRPC),
    )
    // error handling omitted
    client := pb.NewGreeterClient(conn)
    // ...

    关于ssl - 使用 TLS 从 Go 客户端进行 gRPC 调用 - GCP 云功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71876783/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com