【发布时间】:2022-01-04 13:02:52
【问题描述】:
在 ZeroMQ 中,在我的情况下更准确地说是 cppzmq,当您使用 ZAP 时, 它对用户完全透明地处理。
但是,如 RFC 中所述:https://rfc.zeromq.org/spec/27/, Auth 服务器可以在响应中发回用户 ID 和一些元数据:
回复消息应由以下消息帧组成:
- 地址分隔帧,长度应为零。
- 版本框架,应包含三个八位字节“1.0”。
- 请求 ID,可能包含不透明的二进制 blob。
- 状态码,应包含一个字符串。
- 状态文本,可以包含字符串。
- 用户ID,应该包含一个字符串。
- 元数据,可能包含 blob。
再往下一点,就是user id的意思:
user id:这可以在 200 状态的情况下提供用户身份,供应用程序使用。对于其他状态,它应该是空的。
我的问题如下:如何使用 cppzmq 从响应中检索用户 ID?
小代码示例说明我的意思:
void client() {
zmq::context_t context;
zmq::socket_t socket (context, zmq::socket_type::req);
socket.set(zmq::sockopt::zap_domain, "global");
socket.set(zmq::sockopt::plain_username, "user");
socket.set(zmq::sockopt::plain_password, "password");
socket.connect("tcp://127.0.0.1:4242");
...
std::string auth_user_id = /* magic function here */;
}
【问题讨论】:
标签: zeromq zeromq-auth