標籤:

防火牆內 OAuth 2.0 的使用

防火牆內 OAuth 2.0 的使用

不得不承認,在 firewall 之內網路環境太複雜了。不過這個大多數人都不會如此強烈明顯地感知到。 在此記錄一下最近碰到的一個做 Google + 第三方登錄的時候碰上的問題和解決辦法。

問題的具體表現在於:通過 passport 這個庫,走 OAuth 2.0 協議以便拿到第三方授權來做登錄模塊,但依舊拿不到第三方服務提供商 Google + 返回來的 access token,最終沒辦法拿到用戶的信息。 得到的返回消息是:

InternalOAuthError: Failed to obtain access token

而 status of 500 和 Internal Server Error 的錯誤讓我感覺是網路的問題。 即便是通過系統的網路設置裡邊,吧 localhost 從 「忽略主機或域的代理設置」 列表當中去掉也無濟於事。

Stack Overflow 上搜索到的答案也沒能夠直接解決問題,但是因此得到了一些啟發:去 OAuth 依賴庫裡邊修改源碼,手動讓其去走代理線路。 在 your_project/node_modules/oauth/lib/oauth2.js 目錄中做如下修改:

var querystring= require(querystring), crypto= require(crypto), https= require(https), http= require(http), URL= require(url), OAuthUtils= require(./_utils);// line codes to addvar HttpsProxyAgent = require(https-proxy-agent);let httpsProxyAgent = nullif (process.env[https_proxy]) { httpsProxyAgent = new HttpsProxyAgent("http://127.0.0.1:1087"); // fill in your proxy agent ip and port}.... // line codes to add options.agent = httpsProxyAgent; this._executeRequest( http_library, options, post_body, callback ); }exports.OAuth2.prototype._request= function(method, url, headers, post_body, access_token, callback) { ...

重新運行代碼,便可以在 callback function 當中拿到所需要的 profile 數據。

推薦閱讀:

信息安全的核心:CIA三元組 | 安全千字文系列1
2018全國重點城市互聯網工程師浄流入分布TOP10
CVE-2018-8174:IE最新漏洞分析
雲安全涉及的內容到底包含幾個意思
發現「全能挖礦木馬」 挖礦泄密DDoS攻擊樣樣精通

TAG:網路安全 |