实现没有不安全服务器凭据的自定义 AuthMetadataProcessor
Implement a custom AuthMetadataProcessor w/o InsecureServerCredentials
嗨,伙计们,我需要在 grpc c++ 中执行此操作:
客户端发送授权:元数据中的持有者令牌
在服务器中,我需要:
在解决请求之前截获或处理该元数据
获取元数据 查找是否存在自动化键/值,并制定我自己的逻辑来验证令牌,如果令牌有效,则继续解决请求,如果令牌无效,则以返回状态(grpc::状态代码::未经身份验证,消息)完成请求;
我已经有了自己的逻辑来验证令牌。
我看到这篇文章: 拦截服务器和客户端中的 gRPC C++调用
我正确答案他创建了一个自定义的身份验证元数据处理器
但我不知道如何使用 grpc::InsecureServerCredentials() 实现或设置自定义 AuthMetadataProcessor 并使用它启动服务器。
我尝试:
void RunServer() {
auto cred = grpc::InsecureServerCredentials();
cred.get()->SetAuthMetadataProcessor(
std::shared_ptr<grpc::AuthMetadataProcessor>(new grpc::MyServiceAuthProcessor(true)));
//server address
std::string server_address("0.0.0.0:8080");
//our PermissionController service
PermissionController permissionController;
// create the server
ServerBuilder builder;
// Listen on the given address without any authentication mechanism.
builder.AddListeningPort(server_address, cred);
// Register "service" as the instance through which we'll communicate with
// clients. In this case it corresponds to an *synchronous* service.
builder.RegisterService(&permissionController);
// Finally assemble the server.
std::unique_ptr<Server> server(builder.BuildAndStart());
std::cout << "Server listening on " << server_address << std::endl;
// Wait for the server to shutdown. Note that some other thread must be
// responsible for shutting down the server for this call to ever return.
server->Wait();
}
但是服务器不启动显示此错误:
E071217:02:20.429173000 1 insecure_server_credentials.cc:34]断言失败:0
我想知道它是如何实现它的正确方法。
谢谢。
到目前为止,您不能,grpc::AuthMetadataProcessor
不适用于InsecureServerCredentials
,这很不幸,因为在 Envoy 挎斗后面运行 gRPC 服务会很好,TLS 可以终止。
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 自定义先决条件对移动分配运算符有效吗
- 使用VS Code和CMake Tools运行自定义命令
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- std::ranges::elements_view,用于自定义类似元组的数据
- 跟随整数索引列表的自定义类迭代器
- 参数化自定义CMake工具链
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 如何在自定义类中启用'auto loops'?
- 使用QJsEngine在Qt中注册自定义类型
- Qt自定义QPush按钮未显示在布局上
- 自定义对象的dlib序列化在gcc中失败
- 自定义创建QFuture
- 如何在QT中的自定义视频小工具t上绘制矩形