Pulsar 中使用 JWT 进行身份认证

AI边缘推理实战:从集中化迷思到可验证的分布式架构 人工智能推理正经历从‘中心化算力崇拜’向‘边缘能效比拼’的根本性范式转移。其技术原理源于训练与推理在同步性、延迟容忍度和资源约束上的本质差异;核心价值在于提升系统韧性、降低全生命周期成本(TCO)并增强数据主权控制力;典型应用场景覆盖工业质检、车载感知、智能电网及物联网终端等对实时性、离线能力和隐私敏感的领域。本文基于Jetson、Groq等主流边缘芯片的实测数据,深入解析模型轻量化、硬件选型、P2P网络协议与TensorRT-LLM部署等关键工程断层,直击AI推理落地中功耗、内存带宽与热稳定性三大瓶颈。 阅读详情

Pulsar 中使用 JWT 进行身份认证

欢迎阅读 Pulsar 开源书籍《Pulsar入门与实践》
更好的阅读体验,请参考在线版本《使用 JWT 进行身份认证》

Pulsar 使用标准的 io.jsonwebtoken 库支持使用 JWT 做身份认证,同时也提供了 JWT 客户端,可以方便的制作密钥和生成 token。

JWT 简介

JSON Web Token(RFC-7519)是在 Web 应用中常用的一种认证方案。形式上这个 token 只是一个 JSON 字符串,并做了 base64url 编码和签名。

一个 JWT 的 token 字符串包含三个部分,例如:xxxxx.yyyyy.zzzzz(通过点来分隔):

  • Header(下图中红色部分):内容是一个 JSON 串,主要指定签名算法(Pulsar 中默认使用 HS256),使用 base64url 编码。
  • Payload(下图中紫色部分):内容也是一个 JSON 串,主要指定用户名(sub)和过期时间,也是用 base64url 编码。
  • Signature(下图蓝色部分):内容由使用特定算法,计算编码后的 Header 和 Payload 加一个 secret 值而来。签名保证了 token 不被中途篡改。
# 一个使用 HMAC SHA256 算法的签名示例
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

token 内容的查看和验证

image-20220626104218918

我们可以去 https://jwt.io/ 查看 Token 的组成内容,或者使用任意 base64 解密工具查看 header 和 payload 部分。

Pulsar 客户端也提供了验证功能:

  • bin/pulsar tokens show: 查看 token 的 header 和 payload:

    bin/pulsar tokens show -i eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE2NTY3NzYwOTh9.awbp6DreQwUyV8UCkYyOGXCFbfo4ZoV-dofXYTnFXO8
    
    
    {"alg":"HS256"}
    ---
    {"sub":"test-user","exp":1656776098}
    
  • bin/pulsar tokens validate:使用 secret key 或者 public key 验证 token:

    bin/pulsar tokens validate -pk  /Users/futeng/workspace/github/futeng/pulsar-pseudo-cluster/pulsar-1/my-public.key -i "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"
    
    {sub=admin}
    

Pulsar 中使用 JWT 的几个注意点

基于 JWT 的特性,在 Pulsar 中使用需要注意的几个点:

  1. 使用 JWT 可以做认证和授权,但数据仍然处于暴露状态,在安全要求较高的环境,建议开启 TLS 对数据传输加密(会牺牲一小部分性能),以进一步巩固安全。
  2. JWT 最重要的特性是不需要借助第三方服务(例如 Kerberos 之于 KDC),凭借 JWT 内容本身,就能验证 token 是否有效。这也带来一个问题,即 token 一旦签发,在有效期间将会一直有效,无法撤回。因此对于执行某些重要操作的 token,有效期要尽量设置的短。
  3. Pulsar 支持 2 种 JWT 加密方式,即使用对称秘钥(secret key)和使用非对称密钥(private/public key),选择其中一个即可。
  4. Token 的配置容易出错用户(例如需要操作 pulsar-admin 但仅给了test-user 的 token),建议配置后可使用 validate 命令做验证。
  5. Pulsar Broker 会缓存客户端的认证信息,并会在一个固定时间(默认 60 秒)来检查每个连接的认证是否过期,这个刷新时间可以配置 broker.conf 中的 authenticationRefreshCheckSeconds 参数来自定义。

配置 JWT

注意 Pulsar 提供了使用对称密钥(secret key)和使用非对称密钥(private/public key)两种方式,可根据安全强度要求选择其中一个即可。

提示:

  1. Pulsar 中既可以对 broker 的访问做 JWT 认证,也可以对 bookie 的访问做 JWT 认证。两者配置方式类似,本文重点在于区分两种密钥配置的不同,因此将仅针对 broker 对配置做说明。

  2. token 参数的配置,既可使用字符串形式,也可以使用文件形式,可择优选择。

    # 字符串形式
    brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
    # 从文件读取
    brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
    
  3. standalone 的配置内容相同。

使用对称密钥(secret key)

Pulsar 基于 JSON Web Tokens (RFC-7519) 提供了一个标准的 JWT 客户端,可以生成密钥、制作 token 和检测密钥有效性等功能。

Step 1. 生成 secret key

bin/pulsar tokens create-secret-key --output my-secret.key
  • bin/pulsar tokens create-secret-key :生成一个对称密钥,保存到文件 my-secret.key 中。后续将使用这个密钥文件来创建 token。

Step 2. 生成用于超级管理员的 token

我们将超级管理员命名为 admin(对应 pulsar 认证概念里对 role)。这里不指定超时时间( --expiry-time),则默认将不过期。

bin/pulsar tokens create --secret-key my-secret.key --subject admin
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c

Step 3. 生成给测试用户的 token

bin/pulsar tokens create --secret-key my-secret.key --subject test-user --expiry-time 7d
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE2NTY3NzYwOTh9.awbp6DreQwUyV8UCkYyOGXCFbfo4ZoV-dofXYTnFXO8

Step 4. 配置 broker

# 开启认证
authenticationEnabled=true
# 认证提供者
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
# 开启授权
authorizationEnabled=true
# 超级管理员
superUserRoles=admin
# broker Client 使用等认证插件
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
# broker Client 通讯使用的 token(需要 admin role)
brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c"}
# 使用 secretKey 的密钥文件位置(file://开头)
tokenSecretKey=file:///Users/futeng/workspace/github/futeng/pulsar-pseudo-cluster/pulsar-1/my-secret.key

Step 5. 重启 broker

bin/pulsar-daemon stop broker
bin/pulsar-daemon start broker

Step 6. 测试

Step 6.1. 验证 broker token
bin/pulsar tokens validate -sk  /Users/futeng/workspace/github/futeng/pulsar-pseudo-cluster/pulsar-1/my-secret.key -i "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c"

# 打印:{sub=admin}
  • 注意 broker 的 token 需要使用超级管理员。
Step 6.2. 测试超级管理员用户访问
# produce as admin role
bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c"} \
produce public/default/test -m "hello pulsar" -n 10
Step 6.3. 测试普通用户访问
# produce as test-user role
bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE2NTY3NzYwOTh9.awbp6DreQwUyV8UCkYyOGXCFbfo4ZoV-dofXYTnFXO8"} \
produce public/default/test -m "hello pulsar" -n 10
  • 尚未给普通用户赋权,因此命令执行需要报缺少权限的错误。
Step 6.4. 测试给普通用户赋权
bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
namespaces grant-permission public/default --role test-user --actions produce,consume
  • 赋权后,可再次测试普通用户访问,需要可以正常发送数据。
  • 注意 bin/pulsar-admin 命令默认使用的是管理流 8080 端口。
  • 注意 auth-params 需要使用超级管理员 token 来执行赋权。
Step 6.5. 测试给普通用户回收权限
bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.Ra9pwWHTWjB67v5GkVuuDMqXWwfeTJuwflyvmhxYk_c"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \ 
namespaces revoke-permission public/default --role test-user

使用非对称密钥(private/public key)

Step 1. 生成秘钥对

bin/pulsar tokens create-key-pair --output-private-key my-private.key --output-public-key my-public.key

Step 2. 生成用于超级管理员的 token

我们将超级管理员命名为 admin(对应 pulsar 认证概念里对 role)。这里不指定超时时间( --expiry-time),则默认将不过期。

bin/pulsar tokens create --private-key my-private.key --subject admin

eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g

Step 3. 生成给测试用户的 token

bin/pulsar tokens create --private-key my-private.key --subject test-user --expiry-time 7d

eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE2NTY4MDMzODh9.0dAXdyl1dVsLZbhnvJDKPXFmyNlqwDYMMwzOoJ1L2Rl9gfcgVB4DzEfBFesU1F07P5oiM_X5hmxdI5YDSDxU4VGb_Sy3MakOAlROq3a4qzT45eY15-N3IxyfaI66BellDsZWyXVwsWnPYmwMBOlqZXgZAEhPL8HqC3c1IMBeMo78lDNobP7k0SVWsy9jhhmVOcas2ZQ4B-vOC8f0pHAWD29Rf_AV34A5w6Wu5XbQoHpMp5n0KRv2K_oFed_Zmg79uvtLv3Ujd8DaXN9a2vjXRatFYY2iZN8OhB1SV4WjpXB5hyG5Sv9uAHC559W39g8-AznG8NA5J79d-tIftIr8Dg

Step 4. 配置 broker

# 开启认证
authenticationEnabled=true
# 认证提供者
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
# 开启授权
authorizationEnabled=true
# 超级管理员
superUserRoles=admin
# broker Client 使用等认证插件
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
# broker Client 通讯使用的 token(需要 admin role)
brokerClientAuthenticationParameters={"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"}
# 使用 tokenPublicKey 的公钥文件位置(file://开头)
tokenPublicKey=file:///Users/futeng/workspace/github/futeng/pulsar-pseudo-cluster/pulsar-1/my-public.key

Step 5. 重启 broker

bin/pulsar-daemon stop broker
bin/pulsar-daemon start broker

Step 6. 测试

Step 6.1. 验证 broker token
bin/pulsar tokens validate -pk  /Users/futeng/workspace/github/futeng/pulsar-pseudo-cluster/pulsar-1/my-public.key -i "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"

# 打印:{sub=admin}
  • 注意 broker 的 token 需要使用超级管理员。
  • 注意是使用公钥来验证 token(public.key)。
Step 6.2. 测试超级管理员用户访问
# produce as admin role
bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"} \
produce public/default/test -m "hello pulsar" -n 10
Step 6.3. 测试普通用户访问
# produce as test-user role
bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE2NTY4MDMzODh9.0dAXdyl1dVsLZbhnvJDKPXFmyNlqwDYMMwzOoJ1L2Rl9gfcgVB4DzEfBFesU1F07P5oiM_X5hmxdI5YDSDxU4VGb_Sy3MakOAlROq3a4qzT45eY15-N3IxyfaI66BellDsZWyXVwsWnPYmwMBOlqZXgZAEhPL8HqC3c1IMBeMo78lDNobP7k0SVWsy9jhhmVOcas2ZQ4B-vOC8f0pHAWD29Rf_AV34A5w6Wu5XbQoHpMp5n0KRv2K_oFed_Zmg79uvtLv3Ujd8DaXN9a2vjXRatFYY2iZN8OhB1SV4WjpXB5hyG5Sv9uAHC559W39g8-AznG8NA5J79d-tIftIr8Dg"} \
produce public/default/test -m "hello pulsar" -n 10
  • 尚未给普通用户赋权,因此命令执行需要报缺少权限的错误。
Step 6.4. 测试给普通用户赋权
bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
namespaces grant-permission public/default --role test-user --actions produce,consume
  • 赋权后,可再次测试普通用户访问,需要可以正常发送数据。
  • 注意 bin/pulsar-admin 命令默认使用的是管理流 8080 端口。
  • 注意 auth-params 需要使用超级管理员 token 来执行赋权。
Step 6.5. 测试给普通用户回收权限
bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.ijp-Qw4JDn1aOQbYy4g4YGBbXYIgLA9lCVrnP-heEtPCdDq11_c-9pQdQwc6RdphvlSfoj50qwL5OtmFPysDuF2caSYzSV1kWRWN-tFzrt-04_LRN-vlgb6D06aWubVFJQBC4DyS-INrYqbXETuxpO4PI9lB6lLXo6px-SD5YJzQmcYwi2hmQedEWszlGPDYi_hDG9SeDYmnMpXTtPU3BcjaDcg9fO6PlHdbnLwq2MfByeIj-VS6EVhKUdaG4kU2EJf5uq2591JJAL5HHiuTZRSFD6YbRXuYqQriw4RtnYWSvSeVMMbcL-JzcSJblNbMmIOdiez43MPYFPTB7TMr8g"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
namespaces revoke-permission public/default --role test-user 

配合使用 TLS 传输加密

可参考:https://pulsar.apache.org/docs/security-tls-transport

参考

[1] https://pulsar.apache.org/docs/security-jwt “Client authentication using tokens based on JSON Web Tokens”

[2] https://blog.angular-university.io/angular-jwt/ “JWT: The Complete Guide to JSON Web Tokens”

19、Pulsar 安全认证:TLS 与 JWT 实战 本文深入探讨了Pulsar消息系统的两种核心安全认证机制——TLS认证与JWT认证。详细介绍了TLS基于证书的身份验证原理及配置步骤,并结合Docker和Java示例展示实际应用;同时解析了JWT认证的工作流程、加密方案及其在Pulsar中的集成方法。通过流程图和代码实例,帮助读者理解如何在真实场景中构建安全可靠的消息通信系统。 阅读详情

相关推荐

用户消费行为分析(MapReduce实现,Hive分析)

一、题目要求 数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为 数据

紫烟的博客 3013

技术探究|Apache Pulsar 认证与鉴权实践指南

文章摘要本文整理自 2022 年 8 月 Apache Pulsar Meetup 上傅腾题为《Apache Pulsar 企业级安全实践》的分享。数据安全已经成为企业的一项重要竞争优势。傅腾针对集群环境分享 Apache Pulsar 的认证和授权实现,讲述企业如何构建安全的 Apache Pulsar 集群并打造满足个性化要求的 Pulsar 认证或授权插件,以满足不同的企业安全需求。作者介绍...

Apache Pulsar 1809

从JTAG到AS模式:一文搞懂EP4CE10E22C8N所有配置引脚(MSEL, nCONFIG, DATA0)的用法

本文深入解析EP4CE10E22C8N FPGA的配置引脚(MSEL, nCONFIG, DATA0)在不同模式下的使用方法,特别关注从JTAG到AS模式的切换要点。通过详细的配置模式对比、状态机分析和PCB布局建议,帮助开发者避免常见陷阱,提升FPGA配置成功率。

weixin_33713350的博客 320

Pulsar Manager配置自定义认证插件访问

Pulsar Manager和dashboard部署和启用认证pulsar自定义认证插件开发前面博客讲了以token方式访问pulsar 这节博客讲如何配置自定义认证插件的方式访问pulsar#启动pulsar-manager#从容器里复制配置文件出来#停止和删除容器#修改配置文件为自定义插件方式认证,前面博客有讲解如何开发自定义认证插件#启动容器,指定配置文件#把认证的插件jar包放到容器里lib目录#进入容器#增加认证包的路径,不然会报找不到包错误。

yinjl123的博客 463

ABAP内表数据导出Excel:OLE、ALV与GUI_DOWNLOAD方案全解析

在企业级应用开发中,数据导出是连接后台系统与前端业务分析的关键桥梁。其核心原理是将结构化数据转换为通用文件格式,以实现跨平台的数据交换与可视化。从技术价值看,一个健壮的导出功能能显著提升数据处理效率,减少人工干预,是衡量系统实用性的重要指标。常见的应用场景包括报表生成、数据交接和临时数据提取。本文聚焦于SAP ABAP开发领域,深入探讨如何将内表数据高效、稳定地导出至Excel,涵盖了OLE自动化、ALV标准导出以及基于CL_GUI_FRONTEND_SERVICES与GUI_DOWNLOAD的通用方案,并

weixin_32715349的博客 324

MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件

本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。

weixin_30696427的博客 281

Apache Pulsar的Token认证配置方法

在本场Chat中,会讲到如下内容: Apache Pulsar消息队列Token认证原理 Apache Pulsar两种启动方式的Token认证配置方法 如何使用Token认证调用Admin Rest API、发送消息以及消费消息...

GitChat 1802

Zynq工程IP核封装:XCI引用与约束继承实战指南

IP核封装是FPGA系统设计中实现模块复用、团队协作与技术资产沉淀的关键环节。其本质是将功能逻辑、时序约束、接口协议和硬件配置统一抽象为可配置、可验证、可演进的标准化组件。核心原理在于通过XCI文件保留IP核的参数化定义能力,依托Vivado IP Packager实现约束继承、端口自动映射与时钟域解耦,从而保障跨项目集成的时序可信性与约束完备性。该技术广泛应用于Zynq SoC视频处理、高速接口(如HDMI/TMDS)、多时钟域控制系统等场景,尤其在需要长期维护与版本迭代的工业级嵌入式开发中具有不可替代的

weixin_42593701的博客 126

pulsar的客户端权限控制功能(一)

1. 概述 最近在研究pulsar的权限验证部分,权限验证包含两部分: 客户端连接 客户端的访问控制 pulsar提供了authentication和authorization两种方式实现上述两个功能,每一种方式提供了接口。 2. 版本 pulsar 2.8.0 3. 客户端连接验证 默认情况下,pulsar是不会开启连接验证的,即客户端到broker之间、broker到broker之间的访问都没有任何限制。但是在线上环境中,对于权限的控制往往是很重要的。 3.1 在broker.conf文件中开启客户

随便写写 2369

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 407

EML 全面实践指南:把 SAP RAP 业务对象玩出工程化的稳定与优雅

本文面向掌握ABAP基础、正在实施RAP的开发者,深入讲解EML(Entity Manipulation Language)的核心用法。文章围绕READ ENTITIES、MODIFY ENTITIES、COMMIT ENTITIES三大语句,详细解析其语义、类型体系、事务机制及工程实践。重点内容包括:字段裁剪、派生类型、草稿控制、批量更新、事务缓冲与保存序列等关键技术点,并配合真实案例代码。旨在帮助开发者在SAP ABAP On-Premise和BTP环境中构建可维护、可演进的业务对象访问层,同时避免常见

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

pulsar2.9.2开启jwt认证(基于k8s)

配置上之后,broker对于proxy转发过来的数据,需要鉴定client的token,也需要鉴定proxy的token。1、进入目前运行的broker容器,执行如下命令,创建private.key和public.key,放在conf文件夹下。6、修改configMap pulsar-proxy的配置(在使用到proxy的集群中,认证必须在proxy也配置)8、同理,修改pulsar-proxy的statefulset的配置,保证存到容器中的public.key相同。配置成超级管理员的token。

m0_59685732的博客 1096

2023华为od机试C卷【推荐多样性】Java&Go 实现

推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为N份,如果不够N个,也要全部分配完,

MISAYAONE的博客 2181

Apache Pulsar学习笔记12: 开启基于JWT的身份认证

  Pulsar支持可插拔的身份认证和授权机制,Pulsar Proxy或者Pulsar Broker都支持该机制。认证和授权机制一起保证了客户端对Pulsar Topic、命名空间、租户的访问权限。      默认情况下,Pulsar并不会启用加密、身份认证和授权机制。之前我们使用pulsar-admin,pulsar-client等命令行工具,使用Java或Go语言开发的Consumer和Produmer,访问使用docker容器启动的单机Pulsar时,都未用到任何身份认证信息。 也就是说,P

linjingyg的博客 1836

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

基于k8s环境部署pulsar集群

基于k8s环境部署pulsar集群

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1259

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Apache Pulsar零信任安全架构:OAuth2与JWT深度集成终极指南

Apache Pulsar作为分布式发布-订阅消息系统,在构建零信任安全架构时需要全面的身份验证与授权机制。本文将详细介绍如何通过OAuth2与JWT实现Pulsar的零信任安全防护,包括完整配置流程、最佳实践和故障排除方法。 ## 零信任安全架构核心概念 零信任安全架构基于"永不信任,始终验证"的原则,要求所有访问请求无论来自内部还是外部网络,都必须经过严格的身份验证和授权。在Pulsar中

gitblog_00076的博客 411

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Apache Pulsar安全机制完全指南:认证授权与数据加密实战

Apache Pulsar作为新一代分布式发布订阅消息系统,其安全机制设计完善且强大。本文将深入解析Pulsar的三大安全核心:身份认证、访问授权和数据加密,帮助您构建安全可靠的消息流平台。🔒 ## 身份认证机制:多层次安全防护 Apache Pulsar支持多种认证方式,确保只有合法客户端能够连接到消息系统。 ### TLS客户端认证 Pulsar通过TLS证书实现双向认证,在`conf

gitblog_00374的博客 864

天外客翻译机Pulsar多租户支持能力

本文深入分析天外客翻译机Pulsar的多租户技术架构,涵盖身份认证、数据隔离、自定义术语与私有模型等核心机制,揭示其如何实现企业级安全、精准与可管理的实时语音翻译服务。

weixin_30978239的博客 1038

在 K8s 中部署企业级发布订阅消息系统 Apache Pulsar

时间过得比较久了,在开始今天的学习之前先回顾一下前面已经学习的 13 节的内容。阶段复习Pulsar 是一个支持多租户的、高性能的、分布式的 Pub-Sub 消息系统。了解 Pulsar ...

云原生实验室 2760

Apache Pulsar Proxy实战指南:跨集群通信与流量治理全解析

在分布式消息系统中,跨集群通信和流量控制一直是企业级应用的痛点。Apache Pulsar作为云原生分布式发布订阅(Pub-Sub)消息系统,其Proxy组件通过统一接入层设计,解决了多集群互联、权限管控和流量治理难题。本文将从架构设计、核心功能到实战配置,全面解析Pulsar Proxy的工作原理与最佳实践。 ## 一、Proxy组件架构:分布式通信的统一入口 Pulsar Proxy作为客...

gitblog_00552的博客 726

Pulsar Meetup 深圳 2024 大咖推荐

Pulsar Meetup 深圳 2024 大咖推荐活动介绍图片由 AscentStream 谙流科技和腾讯云中间件联合主办的 Pulsar Meetup 深圳 2024 将于 2024年04月27日 14:00-18:00 在深圳腾讯大厦 2 楼多功能厅,精彩呈现,期待大家多多报名!同时我们也开展同步直播,大家可以关注 AscentStream 谙流科技视频号、腾讯云中间件、示说、上海开源信息技...

Apache Pulsar 894

脉冲星 2 月脉动 | 新增多个 PIP 和功能,TGIP-CN 直播持续进行中!

????本月看点速览产品动态新增 PIP新增功能Bug 修复周边生态社区动态海内外社区动态技术干货产品动态>>> 新增 PIP????‍♂️PIP 57 :优化 Bro...

Apache Pulsar 437

告别裸奔,聊聊主流消息队列的认证和鉴权!

RabbitMQ 和 Pulsar 都提供了自定义、可插拔的身份认证框架,然后基于框架的接口来实现各种认证插件,在配置文件中指定要使用的认证插件。Pulsar 内置的认证插件包括 JWT、OAuth2.0、Athenz、Kerberos 等。RabbitMQ 实现的认证插件包括 AMQPLAIN 和 PLAIN。总结:认证框架的选择很多,Kafka 选择的 SASL 机制更加完善,功能更加强大,实现起来也更加复杂。而自定义的机制则实现更加简单,同时也能满足消息队列的认证需求。消息队列认证方式。

m0_69632475的博客 1042
上一篇: 如何在 Apple M1 上使用 Apache Pulsar
futengft
博客等级 码龄16年 3粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值