2013-10-23 21 views
12

私が今作業している作業は、自分の組織のリソースにアクセスするためのGoogle認証を設定することです。Google Cloud Console:無効なリダイレクトURI

ただし、このタスクに問題があります。私の組織では、そのローカルネットワークに非標準ドメインdomain.offを使用しています。また、Google Cloud Console(https://cloud.google.com/console)で「http://dev.domain.off:12345/auth/google/callback.html」をoauth2コールバックとして設定しようとすると、「無効なリダイレクトURI」というエラーが表示されます。

組織の私立開発ドメインには他にも多くのサービスがあるため、正しいインターネットドメインで直接アドレスを使用することはできません。異なるアドレスと競合する必要があります。

私は開発目的のために直接アドレスで生産環境を使用することはできません。開発環境にはプライベートアドレスdomain.offだけがあります。

すべてのプライベートデバイスアドレスをパブリックに変更するために、ホール開発環境を変更することはできません。これは私の義務ではない仕事です。

私の問題に対して解決策はありますか? 私が今見ている唯一の解決策は、非標準ドメインを受け入れるためにoauthコールバック設定フォームでURIバリデータを削除または変更するようGoogle開発者に依頼することです。

+0

私はgoogle cloudについて何も知らない。ちょうどアイデア。おそらく、有効なURLを使用して、proxypassやproxypassreverseのようなプロキシディレクティブでApacheのリクエストを処理することができます。 –

+0

これは助けになりますか?2:https://groups.google.com/forum/#!topic/google-plus-developers/6j6JNmewCXI –

答えて

1

正しいインターネットドメイン

との直接アドレスを使用することはできませんので、あなたはすべてのGoogleの認証応答を取得し、「状態」を使用してサブドメインを修正するためにリダイレクトするために、マスターサブドメインを作成することができ、この

ような何かを試みることができますクエリパラメータ。

たとえば、google.mydomain.comを作成して有効な「リダイレクトURI」として使用すると、ApacheはこのURLをリダイレクト(またはリライト)機能を持つ各ユーザーにリダイレクトします。 apacheの程度

詳細情報はここで http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

コードにリダイレクトします。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^google\. 
RewriteCond %{QUERY_STRING} state=([a-z0-9]+) 
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L] 
1

は、あなたがどこかにあなたが(使用ACCESS_TYPE =オフライン)コントロールの同意を行い、パブリックドメインにリダイレクトすることも可能です?

Googleが認証コードを取得したときに、パブリックドメインからそれを使用したり、httpウェブフックなどで制約を受けているプラ​​イベートドメインに渡したり、プライベートドメインから交換したりしないでください。これにより、ドメインとコールバックのURLを必要なものとは異なる方法で使用することができます。 sdkスクリプトで設定されたredirect_urlは、実際に交換機と呼ばれるサーバーとは独立して、コンソールで設定したものと同じでなければならず、トークンの取得を完了する必要があります。

私はあなたの制約を逃しているのかどうかはわかりませんが、おそらくこれが役立ちます。

3

おそらく、代替のOauthワークフローの1つを使用することをお勧めします。

サービスからグーグルクラウドを使いたい場合は、ここで説明しているサービスアカウントに行ってください:https://developers.google.com/console/help/new/#generatingoauth2 Googleのbigqueryと対話するためにteowaki.comで作業しています。シームレスに動作します。クラウドコンソールにキーを生成し、そのキーをサーバーに配置するだけです。あなたがユーザーを識別するために必要がある場合は、ここでhttps://developers.google.com/console/help/new/#generatingoauth2

この場合に示すように、その後、あなたがインストールされたアプリケーションのためのOAuthのた​​め

行くことができる、あなたは彼らが提示されるにはURLに行くユーザーbeetween選択することができますアプリケーションに貼り付けたり、localhostのURLにリダイレクトしたりする必要があります。私はあなたがWebアプリケーションをやっていると仮定しているので、最初のオプションを選択して貼り付ける必要があるトークンをユーザに提示する必要があります。これはおそらく最高のUXではないでしょうが、おそらく内部アプリケーションである可能性があります。

+0

パブリックドメインを必要としない唯一のオプションをあなたに与えたため、私はあなたに賞金を授与しましたこれは明らかにこの問題の主な問題です。残念ながら、私は開発者とプロダクションでは異なる動作を望んでいないので、実際にパウダーを使った開発ワークフローには役立ちませんが、lan-onlyプロダクションサーバーを持っているという問題にはっきりと答えています。 – systho

+0

ありがとうございました:) dev/productionで異なる動作をするのは正しいです。私はこれがイントラネットアプリケーションだと思ったので、私はその解決策をあなたに提供したのです –

+0

あなたは正しいですが、私はちょうど同じ問題を粉末に付いていますが、メモは今消えた – systho

関連する問題