You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Microsoft.Azure.SignalR.Emulator的访问密钥?

Azure SignalR 模拟器自定义访问密钥设置方案

问题背景

全网未找到修改Azure SignalR模拟器默认访问密钥的相关信息,默认密钥为:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH,对应的连接字符串格式:

Endpoint=http://0.0.0.0;Port=8888;AccessKey=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH;Version=1.0

尝试通过signalr-appsettings.json设置自定义密钥无效,查看源码发现密钥似乎被硬编码,且asrs-emulator帮助命令中没有设置自定义密钥的参数,需确认是否可以修改及正确设置方式。

现有配置文件

Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:8.0

# Create and switch to a non-root user
RUN useradd -ms /bin/bash nonroot && \
    mkdir -p /home/nonroot/signalr && \
    chown -R nonroot:nonroot /home/nonroot

USER nonroot
WORKDIR /home/nonroot/signalr

# Install the SignalR Emulator
RUN dotnet tool install --global Microsoft.Azure.SignalR.Emulator

# Update PATH to include user's dotnet tools
ENV PATH="/home/nonroot/.dotnet/tools:${PATH}"

# Start the emulator with the custom access key
ENTRYPOINT ["asrs-emulator", "start", "-i", "0.0.0.0"]

Docker Compose 配置

signalr-emulator:
  container_name: signalr-emulator
  image: signalr-emulator:latest
  build:
    dockerfile: signalr/Dockerfile
  networks:
    - marble-network
  env_file:
    - .env.signalr
  volumes:
    - signalr:/home/nonroot/.aspnet
    - ./signalr/signalr-settings.json:/home/nonroot/signalr/settings.json
    - ./signalr/signalr-appsettings.json:/home/nonroot/signalr/appsettings.json
  ports:
    - "7071:7071"
    - "9999:8888"

signalr-appsettings.json

{
    "Logging": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning"
      }
    },
    "AllowedHosts": "*",
    "AccessKey": "This key is not working but included in: https://github.com/Azure/azure-signalr/blob/dev/src/Microsoft.Azure.SignalR.Emulator/appsettings.json and the file is being read according to the logs when running 'asrs-emulator start -i 0.0.0.0' | I also looked at the source code of the said repo, and it seems that the Access Key is hardcoded??"
}

signalr-settings.json

{
    "UpstreamSettings": {
        "Templates": [
            {
                "UrlTemplate": "http://0.0.0.0:7071/runtime/webhooks/signalr",
                "EventPattern": "*",
                "HubPattern": "*",
                "CategoryPattern": "*"
            }
        ]
    }
}

结论与解决方案

Azure SignalR模拟器的访问密钥确实是硬编码的,官方目前没有提供修改默认密钥的参数或配置项。原因是模拟器仅面向本地开发测试场景设计,旨在简化调试流程,未考虑生产环境安全需求,因此固定了默认密钥。

若必须使用自定义密钥,可通过两种方式实现:

  • 自定义编译模拟器:克隆Azure SignalR官方仓库,修改源码中硬编码的密钥值,重新编译并安装自定义版本的模拟器。
  • 反向代理中转:在模拟器前端部署反向代理(如Nginx),由代理层验证自定义密钥后再转发请求到模拟器,无需修改模拟器源码即可实现密钥验证逻辑。

注意事项

  • 模拟器仅适用于本地开发测试,禁止在生产环境使用。
  • 若选择自定义编译,需关注官方仓库更新,避免后续版本兼容问题。

内容的提问来源于stack exchange,提问作者Gian Lorenzo Abaño

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:37:13