我正在关注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)
答案 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