2016-10-17 9 views
1

OpenID Connect標準を使用している認証APIがローカルのAndroidアプリケーションにリダイレクトしようとしているときに、私はNot allowed to load local resource: file:///android_asset/www/index.html?code=[code]&state=[state]で立ち往生しています。OpenID接続リダイレクトでローカルリソースを読み込むことができません

アプリケーションを起動すると、まだ接続されていない場合、ユーザー資格情報を要求する認証APIに対してリダイレクトが実行されます。次に、資格情報が良好だった場合、APIは最初のリダイレクト(クエリパラメータとして)に渡されたredirectUriへの別のリダイレクトを実行します。このredirectUriは前のfile:///android_asset/www/index.htmlです。

認証が成功した後、リモートアプリケーション(認証API)が自分のアプリケーションにリダイレクトされるように、自分のapp/phoneを設定する方法がわかりません。

答えて

1

これを達成するためにいくつかのオプションがあります。 OAuth 2.0 specificationで提案されているもの、より具体的には外部のユーザエージェントを想定しているものを見てください。

外部ユーザー・エージェント - ネイティブアプリケーションハンドラとしてクライアントを呼び出すために、オペレーティングシステムに登録方式に(1)リダイレクトURIを使用して、認証サーバからの応答をキャプチャすることができ、(2クレデンシャルの)手動コピーアンドペースト、(3)ローカルウェブサーバーを実行している、(4)ユーザエージェント拡張をインストールし、又は(5)によってリダイレクトを提供URIがサーバ - を識別するクライアントの制御下にあるホストされたリソースに送信され、ネイティブアプリケーションが応答を利用できるようにします。

オプション1:

あなたは、あなたのAndroidアプリケーションが登録カスタムスキームを使用してリダイレクトを設定し、アプリケーションが外部のユーザーエージェントに呼び出されるこの方法は、ブラウザは、示す応答を受け取りますあなたのスキームにリダイレクトします。そこにいくつかのAndroidアプリケーションがあるとすれば、このスキームはかなりユニークでなければならない。あなたが所有しているドメインに逆ドメイン名表記を使用することをお勧めします。たとえば、「app.example.com」を所有していた場合、スキームは「com.example.app」になります。

オプション2:

あなただけのコードでかなりのページが表示され、アプリケーション内で手動で入力することをユーザーに尋ねることをどこかにリダイレクトします。

オプション3:

アプリケーションは、ローカルWebサーバーを起動し、あなたがラインhttp://localhost:[port]/に沿って何かするリダイレクトを設定します。ここでは、複数のアプリケーションが同じものを使用することを決定した場合、ポートの競合に関する問題が発生する可能性があります。

オプション4:

あなたはコードがブラウザで実行しているだろうし、それはより多くのデスクトップのシナリオのために、あなたのアプリケーションに自動的にコードを通信することができるユーザーエージェントの拡張をインストールすることによって。

オプション5:

あなたがホストあなたには、いくつかのサーバー側のコードにして、クライアントのAndroidアプリケーションは、それがそのURLからコードをつかむことができるように認識していることを指すリダイレクトURIを設定します。


このトピックに関するより多くの情報のため、チェック:OAuth 2.0 for Native Apps

を、最終的な注意点として、オプションではありませんfile URLスキームを使用して。さらに、サーバー上のロジックを必要とするオプションで完全なサーバー側に移動したくない場合は、Webtaskとして何かを書くことで、コードの行数を大幅に減らすことができます(カスタムドメイン)。

開示:私はAuth0のエンジニアです。

+0

お返事ありがとうございました!これが私のためにうまくいくかどうかは、私ができるだけ早く伝えます。 –

+0

"com.example.app"のようなカスタムスキームを設定するにはどうしたらいいですか?これはネイティブ/ハイブリッドアンドロイドアプリケーションなので、私は登録されたドメインを持っていません。私が知っている私のアプリケーションにアクセスするための唯一の方法は、 "オプションではない"ファイルURLです。 –

+0

それはちょうど命名規則です、あなたはあなたが望む名前でスキームを登録するように頼むことができます。規約は、同じスキームを登録する2つのアプリの可能性を減らすことです。 –

関連する問題