如何在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结合零信任访问策略,能更灵活地控制不同路径的认证规则:
配置Cloudflare Tunnel:
安装cloudflared工具,创建隧道指向本地https://localhost:5050,并将域名解析到隧道。设置零信任访问策略:
在Cloudflare控制台的「零信任」→「访问」→「应用程序」中,创建自托管应用并关联你的隧道,然后添加两条访问策略(注意策略顺序,优先匹配的放在前面):- 策略1(免认证):
- 路径匹配:
/webhooks/*(或你需要的其他路径) - 动作:允许
- 身份验证:无需身份验证
- 路径匹配:
- 策略2(强制认证):
- 路径匹配:
*(匹配所有其他路径) - 动作:身份验证
- 身份提供者选择Microsoft OAuth,并限制仅
company.com域名用户访问
- 路径匹配:
- 策略1(免认证):
这种方式能实现更精细化的访问控制,适合后续有更多路由规则调整的场景。
内容的提问来源于stack exchange,提问作者boruchsiper
相关产品推荐
相关产品推荐

