OAuth 2認証を実行する際に、ホワイトリストに記載されたリダイレクトURLをローカルにスプーフィングする必要があるユースケースがあります。OAuthプロキシからaccess_tokenを見つけることができません
私はスプーフィングしているドメインのホストファイルエントリと結合した非常に基本的なWebサーバーを実行しています。私は正しく私のトークンを交渉し、足にそれらを返すことができるんだけど、足が私のaccess_token
またはrefresh_token
を拾っていない、それは単に生の応答が表示されます。
ここに私のサーバー・コードがあります(プレースホルダ機密データ用):
var http = require('http'),
request = require('request');
var PORT = 6109;
var server = http.createServer(function(req, res) {
var code = req.url.split('?')[1].split('=')[2];
request({
url: 'https://<access token URL>/oauth2/token?code=' + code,
method: 'POST',
form: {
'client_id': <client_id>,
'client_secret': <client_secret>,
'grant_type': 'authorization_code',
'redirect_uri': <spoofed redirect URL>
}
}, function(err, response, data) {
data = JSON.parse(data);
res.writeHead(200, {'Content-Type': 'application/json'});
res.write(JSON.stringify(data.result));
// I also tried this with the same end-result
// res.writeHead(200);
// res.write('access_token=' + data.result.access_token + '&token_type=' + data.result.token_type + '&refresh_token=' + data.result.refresh_token);
res.end();
});
});
server.listen(PORT, function() {
console.log('Server listening on port %d', PORT);
});
私は何が欠けていますか? Pawが私のトークンを見つけられないのはなぜですか?ここで
は、参考のために私の設定です:
他のいくつかの注目すべきポイント:
- のOAuthプロバイダーは非標準であり、スペックからかなりの数のものをflubs(私のプロキシが存在します
- リダイレクトURLのドメインは実際ですが、URLは解決されません(これはローカルホストエントリの理由の一部です)
- 私は流れのこの部分を示していないんだけど、私が正しく私はあなたが認証URLとアクセストークンURLの間で、おそらく混乱していると思う前に
code
値
私は用語を混乱させる可能性が高いですが、あなたが言及した他の助成金タイプではなく、認可コード付与タイプが必要です。更新された質問の私の認証設定の添付スクリーンショットを参照してください。 –
私は、認可の手順を見て通過することにも言及する必要があります。私は後でトークンを取得しています。応答からのトークンを手動でコピーして対応するauthフィールドに貼り付けると、すべて動作します。私が直面している問題は、トークンが自動的にそれらのフィールドに値を設定していないということです。 –
後半は申し訳ありません!私はいくつかの混乱があると思う...助成金の種類 "認証コード"でコードは、URL paramを介して第三者(ここでは、Paw)に渡す必要があります。次に、クライアントアプリケーションはヘッドレスHTTPリクエスト(webviewではなく)でトークンを取得します。しかし、ここであなたの認証URLは "access_token"を直接表示(またはリダイレクト)しています。ここで、PawはまだリダイレクトURLのURLパラメータの "code"値を見つけるのを待っています。 –