如何在Azure应用服务中配置带Azure AD身份验证的Shiny应用
AzureAuth配合Shiny在Azure部署的配置指南与问题解决
核心参数与Azure门户配置对应规则
- tenant:填写Azure应用注册页的目录(租户) ID,和你截图中标注的对应字段一致即可
- app:填写Azure应用注册页的应用程序(客户端) ID,和你截图中标注的对应字段一致即可
- resource:该字段为请求的权限范围,不要替换为门户显示的授权端点地址。如果仅需要基础身份校验,保留你当前的
"openid"配置即可;如果后续需要调用Azure管理接口,再补充"https://management.azure.com/.default"。 - redirect:必须和你在Azure应用注册中配置的重定向URI完全一致,正确填写格式为
https://myapp.azurewebsites.net/.auth/login/aad/callback,不要直接填写应用根地址。
身份验证后500错误解决方案
你遇到的错误是Azure App Service自带的身份验证中间件,和Shiny侧AzureAuth包的OAuth逻辑发生冲突,双重鉴权导致请求头体积超出限制触发报错,可根据场景选择以下方案修复:
- 方案1:关闭Azure App Service自带的身份验证中间件,所有身份校验逻辑完全交由Shiny侧的AzureAuth处理,避免重复鉴权导致的请求头堆叠。
- 方案2:如果需要保留Azure自带中间件,进入App Service的「配置」-「应用程序设置」页,添加配置项
WEBSITE_AUTH_DISABLE_IDENTITY_FLOW = true,禁用中间件自动向请求注入的身份标识头,降低请求头体积。 - 方案3:若以上方案仍不生效,可修改Shiny启动参数,放大允许的请求头上限,启动参考命令为:
shiny::runApp( host = "0.0.0.0", port = 3838, options = list( "http.maxHeaderSize" = 64 * 1024 ) )
内容的提问来源于stack exchange,提问作者Dean MacGregor
相关产品推荐
相关产品推荐

