2016-10-12 5 views
1

OAuth2ワークフローを実装するのが初めてです。私はグーグルOAuth2に対してテストしていると私の設定は、次のとおりです。OAuth 2実装期待どおりに機能しない

  1. Play Framework for server side。
  2. クライアント側の角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で実行されている場合、そのアクセスコードはそのポートからのリクエストに対してのみ有効ですか?

これがなぜ機能していないのかを理解するのに何時間も費やされているので、助力をいただければ幸いです。

答えて

0

redirect_urlをコンソールに登録しましたか?登録してからしばらくお待ちですか?まったく同じですか?

はこちらをご覧ください:https://developers.google.com/identity/protocols/OAuth2InstalledApp

アプリが許可応答を受信するために、カスタムURIスキームのためのシステムに登録する必要があります。アプリがカスタムURIスキームを登録する方法は、プラットフォームによって異なります。私たちのライブラリとサンプルは、カスタムURIスキームのリダイレクトのプラットフォーム固有の実装を示しています。

あなたは、クライアント側のWebアプリケーションからの認証を扱っている場合、あなたはまた、より単純で、クライアント側の認証に対処するように設計され、暗黙の補助金の流れの代わりに、認証コードを使用することを考慮することができますが:https://developers.google.com/identity/protocols/OAuth2UserAgent

関連する問題