通过Rake Task

时间:2018-10-09 10:54:39

标签: proxy ruby-on-rails-5 azure-active-directory adal microsoft-graph-sdks

我正在关注this网站,用于连接到Microsoft Graph以使用ADAL gem获取访问令牌。 我已经编写了一个Rake任务来执行此操作。在开放式网络中可以正常运行,但在公司网络中则无法运行。

我已经在bash配置文件和终端的bashrc文件中设置了代理凭据

export http_proxy=http://username:pwd@proxy.corporate.com:8080/
export HTTP_PROXY=http://username:pwd@proxy.corporate.com:8080/
export https_proxy=http://username:pwd@proxy.corporate.com:8080/
export HTTPS_PROXY=http://username:pwd@proxy.corporate.com:8080/

我收到

  

SocketError:无法打开与login.microsoftonline.com:443的TCP连接(主机名未知:login.microsoftonline.com)

1 个答案:

答案 0 :(得分:0)

OP解决方案。

对ADAL gem中的user_credential.rb文件进行了整周处理后问题已解决

要编辑的文件:/azure-activedirectory-library-for-ruby-24e1b7f0dc37/lib/adal/user_credential.rb

def realm_discovery_response
  @realm_discovery_response ||=
    JSON.parse(Net::HTTP.get(realm_discovery_uri))
end

将上面的代码替换为 Net :: HTTP.get ,不使用系统代理,只有 Net :: HTTP.Get.new 有效

    def realm_discovery_response
      uri = URI.parse(realm_discovery_uri.to_s)
      puts "URI #{uri}"
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true if uri.scheme == 'https'
      req = Net::HTTP::Get.new(uri.request_uri)
      res = http.request(req)
      @realm_discovery_response ||= JSON.parse(res.body)
    end