2016-04-05 11 views
1

他のベンダーが作成したREST Webサービスにアクセスしたいです。しかし、問題はOAuthのセキュリティです。私はユーザー名、パスワード、消費者キーと消費者の秘密を持っています。OAuthセキュリティで保護されたRestサービスにアクセスする最も良い方法は何ですか?

まず、リフレッシュトークンを取得するサービスを呼び出します。これは応答です

{ 
    "scope": "PRODUCTION", 
    "token_type": "bearer", 
    "expires_in": 3148, 
    "refresh_token": "315381713fc905a8c5f586d5145bd84", 
    "access_token": "46ed281862dc48d2d46372fc2e84e5" 
} 

有効期限付きのrefresh_tokenを取得しました。有効期限が切れるまでこのトークンをデータベースまたはメモリに保持し、そのリフレッシュトークンの有効期限が切れた後にリフレッシュトークンを取得するためにこのサービスを再度呼び出す必要があります。

このリフレッシュとアクセストークンを私の側(データベースまたはメモリ)に保存する方法はわかりません。このサービスにアクセスするより良い方法を見つけるのを手伝ってください。

+0

アクセストークンとリフレッシュトークンは公開されていません。彼らはあなたの "秘密の鍵"です。 「PRODUCTION」APIエンドポイントを提供していないのは良いことです: – Uzbekjon

+0

はい。このトークンは実際のトークンではありません。私はそれらを編集し、ここに投稿します。 –

答えて

0

ほとんどの場合、アクセスおよびリフレッシュトークンをアプリケーションプロセスより長く保ちたいとします。つまり、もう一度再認証したくないということです。そのため、トークンを永続ストレージ(DB、ファイルなど)に保存する方がよいでしょう。

既存のJava用oAuthクライアントを使用すると、コードを簡素化できます。いくつかの人気の例は以下のとおりです。

のOAuth結果は、OAuthのサーバーからの標準的なJSONの結果です。したがって、libのいずれかを設定しても問題は起こりません。

+0

暗号化後にストアDBのような処理を行う標準的な手順はありますか?トークンが期限切れになっているかどうかを判断する最良の方法は何ですか?(サービス呼び出しまたは期限切れの比較? –

+0

いいえ、「標準手順」はありません。いつものように、このことはあなたの文脈に依存します。しかし、いずれにしても、ほとんどの場合、アプリケーションの再起動中にそれらを保持したいと考えています。だから、良い選択肢は、ミドルウェア(キャッシュ層かもしれない)や一時ファイルでDBに永続させることですが、パフォーマンスのためにメモリに読み込んでください。あなたの2番目の質問について。期間をチェックすることで、有効期限の直前にアクセストークンを更新するようリクエストすることができます。また、oAuthサーバーからの最初のエラー応答でアクセストークンを実行することもできます。 – Uzbekjon

+0

@samithkumarasingha、あなたがこれらの詳細について不思議であれば、私は非常に既存のライブラリを使用することをお勧めします。なぜなら、私の答えにあるものはすべてあなたのためにこれらを自動的に行い、ビジネスロジックに集中することができるからです。また、Webクライアントなどからリクエストトークンを取得しているときにランダムな文字列を設定するなど、考慮する必要のあるセキュリティのニュアンスがあります。そうしないと、MiM攻撃が可能になります。 – Uzbekjon

関連する問題