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

AzureAuth R包授权码模式连接失败:localhost拒绝连接,设备码模式正常

解决方案

核心原因

授权码模式要求本地端口(此处为1410)监听Azure AD的回调请求,但Posit Workbench的RStudio环境默认不会暴露本地端口,且IDE沙箱环境无法直接启动HTTP服务器接收回调,导致Azure AD无法将授权码传回localhost:1410,触发连接拒绝错误。设备码模式无需本地回调,因此不受影响。

可行解决方法

1. 自定义回调逻辑(推荐)

通过auth_callback参数手动处理认证流程,绕过本地端口监听:

library(AzureAuth)
redirect <- "http://localhost:1410"
token <- AzureAuth::get_azure_token(
  "My_Resource",
  "My_Tenant_ID",
  "My_App_ID",
  use_cache = FALSE,
  auth_type = "authorization_code",
  authorize_args = list(redirect_uri = redirect),
  auth_callback = function(url) {
    cat("请访问以下URL完成认证:\n", url, "\n")
    cat("认证后复制返回的授权码,粘贴到此处:")
    readLines("stdin", n = 1)
  }
)

执行后,控制台会输出认证URL,手动在浏览器打开完成认证,将页面返回的授权码粘贴回控制台即可获取令牌。

2. 开放本地端口并调整环境

  • 开放RHEL 8防火墙的1410端口:
    sudo firewall-cmd --add-port=1410/tcp --permanent
    sudo firewall-cmd --reload
    
  • 调整SELinux策略允许网络连接:
    sudo setsebool -P httpd_can_network_connect 1
    
  • 在Posit Workbench中配置端口转发,将本地1410端口映射到可外部访问的地址(需参考Workbench官方文档完成配置)。

3. 修改Azure应用重定向URI

将Azure应用注册的重定向URI改为Posit Workbench的公共访问URL(需确保该URL已在Azure应用的重定向URI列表中添加并验证),然后修改代码中的redirect参数为该URL。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:20:09