2017-05-30 15 views
2

開発中の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の準備ができたときに実行されるすべての私の機能を実行します。..

何の呼び出しがサイレントではないが、常にポップアップを要するかのように表示されます。..

+0

このトピックについて詳しく知りましたか? – Koscik

+0

私はそうではないと恐れています。 –

+0

OS、ブラウザ、アプリケーション、ライブラリに問題があるかどうかを確認しようとしています。あなたはフォローイングを確認できますか? 1.次のサンプルを実行する際に同じ問題がありますか? https://github.com/Azure-Samples/active-directory-javascript-graphapi-v2? 2.使用しているOS /ブラウザのバージョンはどちらですか? –

答えて

0

は「下の「信頼済みサイト」にURLの下に追加しますインターネットオプション "は、問題を解決し

login.microsoftonline.com」内部" のセキュリティ

はADAL JS Gitのドキュメントからヒントを得た:https://github.com/AzureAD/azure-activedirectory-library-for-js#trusted-site-settings-in-ie

もちろんそれすべてのユーザーのマシンで実行する必要があります。私たちの内部ウェブサイトだったので、私たちは、IT部門に、この特定の設定をすべてのユーザーのマシンに適用するポリシーを追加するよう依頼しました。