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

如何在ngrok中为特定路由设置匿名访问(已配置Microsoft OAuth)

实现部分路由免OAuth认证的方案

不管是用ngrok还是Cloudflare Tunnel,都能实现你的需求,以下是具体配置方法:

一、使用ngrok实现

ngrok的OAuth认证支持路径跳过配置,你只需要在现有隧道的oauth节点下添加skip_uri参数,指定不需要认证的路由即可。

修改后的配置文件示例:

version: "2"
authtoken: token
tunnels:
    default:
        proto: http
        addr: https://localhost:5050
        host_header: "https://localhost:5050"
        schemes:
            - https
        domain: my-ngrok-website.ngrok-free.app
        oauth:
            provider: "microsoft"
            allow_domains: ["company.com"]
            skip_uri: ["/webhooks/*", "/api/public/notify"] # 填你要免认证的路径,支持通配符
  • skip_uri是数组格式,支持精确路径和通配符(比如/webhooks/*匹配所有webhooks子路径)
  • 配置生效后,除了这些指定路径,其他所有请求都会触发Microsoft OAuth认证

如果需要更复杂的路由隔离,也可以创建多个ngrok隧道:一个带OAuth保护主站点,另一个专门暴露免认证路径(使用不同子域名或路径前缀),但这种方式不如skip_uri简洁。

二、使用Cloudflare Tunnel实现

Cloudflare Tunnel结合零信任访问策略,能更灵活地控制不同路径的认证规则:

  1. 配置Cloudflare Tunnel:
    安装cloudflared工具,创建隧道指向本地https://localhost:5050,并将域名解析到隧道。

  2. 设置零信任访问策略:
    在Cloudflare控制台的「零信任」→「访问」→「应用程序」中,创建自托管应用并关联你的隧道,然后添加两条访问策略(注意策略顺序,优先匹配的放在前面):

    • 策略1(免认证):
      • 路径匹配:/webhooks/*(或你需要的其他路径)
      • 动作:允许
      • 身份验证:无需身份验证
    • 策略2(强制认证):
      • 路径匹配:*(匹配所有其他路径)
      • 动作:身份验证
      • 身份提供者选择Microsoft OAuth,并限制仅company.com域名用户访问

这种方式能实现更精细化的访问控制,适合后续有更多路由规则调整的场景。

内容的提问来源于stack exchange,提问作者boruchsiper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:46:01