第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go中如何通過HTTP對(duì)RPC服務(wù)器和客戶端進(jìn)行認(rèn)證?

Go中如何通過HTTP對(duì)RPC服務(wù)器和客戶端進(jìn)行認(rèn)證?

Go
翻翻過去那場雪 2023-02-28 21:15:50
我是 GO 的新手,我正在關(guān)注https://parthdesai.me/articles/2016/05/20/go-rpc-server/來構(gòu)建一個(gè)簡單的 RPC 服務(wù)器和客戶端。在這篇文章中,它說這種方法 (HTTP) 的好處是,您可以在允許 RPC 之前使用 HTTP 支持的任何身份驗(yàn)證方法輕松地執(zhí)行客戶端身份驗(yàn)證。但是頁面上的示例似乎沒有執(zhí)行它。我在 StackOverflow 上搜索過它,發(fā)現(xiàn)使用 JSON-RPC 調(diào)用傳遞身份驗(yàn)證詳細(xì)信息說有兩種方法可以完成您想要的事情:要么實(shí)現(xiàn)一個(gè) HTTP-speakingio.ReadWriteCloser并像您的示例中那樣使用,要么實(shí)現(xiàn)一個(gè)rpc.ClientCodec執(zhí)行 HTTP 基本身份驗(yàn)證并與rpc.NewClientWithCodec.但是,我仍然不知道該怎么做。我可以有一些示例代碼(可能是Basic Authentication方法)嗎?
查看完整描述

1 回答

?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

在 gRPC 中間件中使用轉(zhuǎn)碼和檢查身份驗(yàn)證對(duì)于使用gRPC 網(wǎng)關(guān)的gRPC 上的 http 服務(wù)器更好。


https://cloud.google.com/endpoints/docs/grpc/transcoding


要在標(biāo)頭中獲得授權(quán),請使用 gRPC 中間件并使用 gRPC MD 從上下文中獲取。


srv := grpc.NewServer(exampleJwtMiddleware())


func exampleJwtMiddleware() grpc.UnaryServerInterceptor {

    return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {


        token, err := extractHeaderFromContext(ctx, "Authorization")

        // do sometings...

        return handler(ctx, req)


    }

}


func extractHeaderFromContext(ctx context.Context, header string) ([]string, error) {

    md, ok := metadata.FromIncomingContext(ctx)

    if !ok {

        return nil, ERROR_NO_HEADER_IN_REQUEST

    }


    foundedHeaders, ok := md[header]

    if !ok {

        return nil, ERROR_NO_HEADER_IN_REQUEST

    }


    return foundedHeaders, nil

}


查看完整回答
反對(duì) 回復(fù) 2023-02-28
  • 1 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)