OAuth2ワークフローを実装するのが初めてです。私はグーグルOAuth2に対してテストしていると私の設定は、次のとおりです。OAuth 2実装期待どおりに機能しない
- Play Framework for server side。
- クライアント側の角2。
両方のアプリケーションが同じボックスにありますが、異なるポートで実行されています。しかし、クライアントサイドのAjaxリクエストのプロキシ設定があります。
私はトークンのためにgoogleから発行されたコードを交換するサーバー側で作業の正当性を確認します。手動でテストして、ブラウザのタブに直接認証エンドポイントを入力すると、すべてが機能します。私は、Googleにリダイレクトされ、ログインしてから、認証エンドポイントにリダイレクトされ、トークンが発行されます。承認エンドポイントが最初にヒットすると、303の応答が送信され、ブラウザは自動的にgoogleにリダイレクトされます。ログインに成功すると、googleはautorizationエンドポイントにアクセスコードをURLにリダイレクトします。サーバーはアクセスコードを読み取り、トークンと引き換えにGoogleに送信します。私の認可エンドポイントはhttp://localhost:8000/auth/google
だと言いますが、角度2のアプリケーションからフローを開始しようとすると、グーグルへのログインが成功した後にgoogleから発行されたコードを送信しようとします。クライアント側では、許可エンドポイントhttp://localhost:8000/auth/googleに設定されたredirect_uriを使用してGoogleにリクエストを開始しています。ログインに成功すると、私はgoogleから返された認証コードを読んで、それをサーバーに送信します。この例では、redirect_uri_mismatchがあるというエラーが表示されます。
この設定がうまくいかない理由を理解できません。 Googleが特定のドメインにアクセスコードを制限していますか?つまり、角度アプリがポート3000で実行されている場合、そのアクセスコードはそのポートからのリクエストに対してのみ有効ですか?
これがなぜ機能していないのかを理解するのに何時間も費やされているので、助力をいただければ幸いです。