亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用火庫身份驗證從飛鏢調用谷歌云運行gRPC:由未知頒發機構簽名的證書

使用火庫身份驗證從飛鏢調用谷歌云運行gRPC:由未知頒發機構簽名的證書

Go
江戶川亂折騰 2022-10-04 19:58:11
服務器我使用 gRPC 中間件來檢查流中的火庫身份驗證令牌:package main...func main() {    port := os.Getenv("PORT")    if port == "" {        port = "8080"    }    grpcEndpoint := fmt.Sprintf(":%s", port)    log.Printf("gRPC endpoint [%s]", grpcEndpoint)    logger, err := zap.NewProduction()    if err != nil {        log.Fatalf("Failed to init logger: %v", err)    }    defer logger.Sync() // flushes buffer, if any    grpcServer := grpc.NewServer(        grpc.StreamInterceptor(grpc_middleware.ChainStreamServer(            grpc_ctxtags.StreamServerInterceptor(),            grpc_zap.StreamServerInterceptor(logger),            grpc_auth.StreamServerInterceptor(server.AuthFunc))),    )    ctx := context.Background()    fb, err := firebase.NewApp(ctx, &firebase.Config{        ProjectID: "my-firebase-project",    })    server.App = fb    if err != nil {        panic(fmt.Sprintf("Failed to init firebase: %v", err))    }    pb.RegisterMyAwesomeServer(grpcServer, server.NewServer())    listen, err := net.Listen("tcp", grpcEndpoint)    if err != nil {        log.Fatal(err)    }    log.Printf("Starting: gRPC Listener [%s]\n", grpcEndpoint)    log.Fatal(grpcServer.Serve(listen))}package server...func parseToken(ctx context.Context, token string) (*auth.Token, error) {    client, err := App.Auth(ctx)    if err != nil {        return nil, err    }    nt, err := client.VerifyIDToken(ctx, token)    if err != nil {        return nil, err    }    return nt, nil}type AuthToken stringfunc AuthFunc(ctx context.Context) (context.Context, error) {    token, err := grpc_auth.AuthFromMD(ctx, "bearer")    if err != nil {        return nil, err    }    tokenInfo, err := parseToken(ctx, token)    if err != nil {        return nil, status.Errorf(codes.Unauthenticated, "invalid auth token: %v", err)    }    grpc_ctxtags.Extract(ctx).Set("auth.uid", tokenInfo.UID)    newCtx := context.WithValue(ctx, AuthToken("tokenInfo"), tokenInfo)    return newCtx, nil}
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

實際上,后端缺少證書...

通過使用以下方法解決:


COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/


在泊塢窗文件中


FROM golang as build


WORKDIR /all


COPY . .


# Build static binary

RUN CGO_ENABLED=0 GOOS=linux \

    go build -a -installsuffix cgo \

    -o /go/bin/server \

    cmd/main/main.go


FROM scratch


COPY --from=build /go/bin/server /server

COPY --from=build /all/config.yaml /config.yaml

COPY --from=build /all/svc.dev.json /svc.dev.json


### THIS SOLVED

COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

###


ENV GOOGLE_APPLICATION_CREDENTIALS /svc.dev.json


ENTRYPOINT ["/server", "./config.yaml"]


查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號