現在取り組んでいるプロジェクト用に RESTful API を構築しています。次の理由により、メイン アプリケーションで API を使用できるようにしたいと考えています。
- 維持するコードのセットが1つになる
- サードパーティの開発者向けに API を公開することを決定した場合、それは既に完了しています。
- それを消費するモバイルアプリケーションを作成する可能性を開きます
- 私は本当にそれを行う方法を学びたいです
API はサブドメインでホストされhttps://api.example.com
、メインの Web アプリケーションはルート ドメインでホストされますhttps://example.com
。
概念的にはすべてがどのように機能するかを理解していますが、私の主な質問は、認証フローがどのように変化するかということです。通常、サードパーティのアプリは次のようになります。
- からリクエスト トークンを取得します。
https://api.example.com/request_token
- ユーザーをリダイレクトして認証する
https://api.authenticate.com/authorize
- サードパーティのアプリケーションにリダイレクトされる
- からアクセス トークンを取得します。
https://api.example.com/access_token
私は両方のドメインを管理しているので、次のようなことはできますか?
- ユーザーがログイン画面に到達したときにリクエスト トークンを取得します。
https://www.example.com
https://www.example.com
ユーザーは、同じコードを呼び出すフォームを使用して認証しますhttps://api.example.com/authorize
- 認証情報が有効な場合、リクエスト トークンはアクセス トークンと交換されます。
- アクセストークンはセッションに保存され、通常のようにユーザーがログアウトすると期限切れになります
手順 3 はコードが重複するため間違っているように感じますが、技術的に異なるドメインであるためhttps://www.example.com
、データの送信先のログイン フォームである XSS 攻撃にさらされることはありませんか?https://api.example.com
私はこれを過度に複雑にしていますか?