1 回答

TA貢獻1891條經驗 獲得超3個贊
在 gRPC 中間件中使用轉碼和檢查身份驗證對于使用gRPC 網關的gRPC 上的 http 服務器更好。
https://cloud.google.com/endpoints/docs/grpc/transcoding
要在標頭中獲得授權,請使用 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
}
- 1 回答
- 0 關注
- 186 瀏覽
添加回答
舉報