開発中のWebアプリケーションにMSALを実装しようとしましたが、特にIEとEdgeで問題が発生しました。azure webappでMSAL.jsを使用して認証する
最初の問題は、クロムとIE/Edgeの両方に発生します。ログインすると2つのポップアップが表示されます。 2番目のポップアップが終了する前に、プログラムは既にGraph APIを呼び出してデータを返しています。なぜそれが表示されるのかわかりません。コードは次のようになります。
function login(){
clientApplication = clientApplication || new Msal.UserAgentApplication({ClientId}, null, function (errorDes, token, error, tokenType) {});
clientApplication.loginPopup(["user.read files.readwrite.all group.readwrite.all"]).then(function (token) {
getAccessToken();
}, function (error) {
// handle error
});
}
function getAccessToken() {
clientApplication.acquireTokenSilent(["user.read files.readwrite.all group.readwrite.all"]).then(function (token) {
//Call Graph API and do stuff.
});
}
2つのポップアップを表示する以外に、これはクロムで完全に機能します。私がこのうちのいずれかを外すと、私は認証されません。
今、2番目の部分は問題ですが、私はそれをIEで動作させる約束のためにpolyfillを含めましたが、まだまだ何か奇妙なことに遭遇します。 IEでプロテクトモードを無効にしないと、両方のポップアップが開きますが、最初のモードではhttps:// {site} .azurewebsites.net/nullにリダイレクトされます。 2番目のポップアップはabout:空白にリダイレクトされます。どちらの窓も閉まることはありません。
しかし、内部テストのためにMSAL.jsのドキュメントに示唆されているように、プロテクトモードを無効にすると、認証されます。ポップアップは自動的に閉じません。これは、明らかにマルチテナントWebアプリケーションの実行可能なソリューションではありません。
私の認証フローについて何か本当に間違っているのですか、それとも何か不足していますか?単一のページアプリケーションでMSAL.jsを使用して認証を実行するためのまともな文書がありますか?
EDIT:掘り下げた後、authflowもサイレントコールを行うiframeで開始されていることがわかりました。上記のiframeにページ全体が読み込まれる理由はありますか?これは、DOMの準備ができたときに実行されるすべての私の機能を実行します。..
何の呼び出しがサイレントではないが、常にポップアップを要するかのように表示されます。..
このトピックについて詳しく知りましたか? – Koscik
私はそうではないと恐れています。 –
OS、ブラウザ、アプリケーション、ライブラリに問題があるかどうかを確認しようとしています。あなたはフォローイングを確認できますか? 1.次のサンプルを実行する際に同じ問題がありますか? https://github.com/Azure-Samples/active-directory-javascript-graphapi-v2? 2.使用しているOS /ブラウザのバージョンはどちらですか? –