2

いくつかのドキュメントに基づいて、B2C セットアップを作成しました。以下のリンクを参考にしました。

https://blogs.technet.microsoft.com/ad/2015/09/16/azure-ad-b2c-and-b2b-are-now-in-public-preview/

だから私はredirect_uriをセットアップしました、例えば、

「https://mycompany.com/login/」

ID プロバイダーとして Google を使用しました。ただし、サインアップ/サインインを行うと、システムはサインアップ/サインイン ページから

「http s://mycompany.com/login/#id_token=eyJ0eXAi...」

B2C から返されたリダイレクト URL には「id_token」変数が含まれており、「http://calebb.net/」で確認すると、含まれている詳細は予想どおりです。

私が抱えている問題は、redirect_uri の後、id_token 変数の前にハッシュ "#" マークがあることです。ハッシュのため、id_token 変数はサーバーに送信されません。これは、ハッシュ マークの後に何も送信しないというブラウザのデフォルトの動作のためです。ハッシュマークはフラグメント識別子です。

したがって、id_token の値を取得できません。

この制限を克服して、サーバー アプリケーションが B2C システムから返された URL から id_token の値を取得できるようにする方法はありますか? それとも、修正が必要な B2C のバグのようなものですか?

Python/Django Web アプリケーションを使用しています。

ありがとう。

4

3 に答える 3

2

こちらもコメントできませんが、

フロントエンドに AngularJS を使用している場合は、HTML5モードを有効にします。

私はこれを使用しました$locationProvider.html5Mode(true);

AngularJSによると: 開発者ガイド

HTML5 モードでは、$location サービスの getter および setter は、HTML5 history API を介してブラウザの URL アドレスと対話します。これにより、同等のハッシュバンの代わりに、通常の URL パスと検索セグメントを使用できます。HTML5 History API がブラウザーでサポートされていない場合、$location サービスはハッシュバン URL を自動的に使用するようにフォールバックします。これにより、アプリを表示しているブラウザーが履歴 API をサポートしているかどうかを心配する必要がなくなります。$location サービスは、利用可能な最適なオプションを透過的に使用します。

従来のブラウザーで通常の URL を開く -> ハッシュバン URL にリダイレクトする 最新のブラウザーでハッシュバン URL を開く -> 通常の URL に書き換える このモードでは、Angular はすべてのリンクをインターセプトすることに注意してください (以下の「Html リンクの書き換え」ルールに従います)。 )、完全なページのリロードを実行しない方法で URL を更新します。

于 2016-03-26T17:31:17.643 に答える