2017-09-04 8 views
2

私はADAL.js(Azure Active Directoryを呼び出しています)をユーザー確認のためのjavascriptライブラリとして使用しています。私はこのために、次のコードを使用しています: ADAL.jsのLogin()後のコールバックがEdgeで呼び出されていません

  1. はonSuccessLogin()が常にオンと呼ばれていない理由:すべてはクロームで正常に動作しているものの、

    <!DOCTYPE html> 
    <html> 
    <head> 
        <meta charset="utf-8" /> 
        <title></title> 
    </head> 
    <body> 
        <script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.15/js/adal.min.js"></script> 
        <script> 
         var endpoints = { 
          "https://management.core.windows.net": "https://management.core.windows.net" 
         }; 
         var config = { 
          clientId: 'e333d3fe-a73a-4476-8121-8a57f9a972ca', 
          endpoints: endpoints, 
         }; 
         var authContext = new AuthenticationContext(config); 
         authContext.handleWindowCallback(); 
    
         function onSuccessLogin(error, token, msg) { 
    
          console.log("Inside Call back"); 
    
          if (!!token) { 
           console.log("Log-in to Azure successfully done", token); 
          } 
          else { 
           console.log("Error while log-in to Azure", error); 
          } 
    
          if (!!authContext._user) { 
           console.log("You are connected to Azure ")   
          } 
         } 
    
         function login() { 
          authContext.popUp = true; 
          authContext.callback = onSuccessLogin; 
          authContext.login(); 
          // authContext.handleWindowCallback(); 
          var user = authContext.getCachedUser(); 
          console.log(user); 
         }; 
    
         function logout() { 
          authContext.logout(); 
         }; 
    
        </script> 
        <input id="Button1" type="button" value="clickme" onclick="clickme()" /> 
        <input id="Button3" type="button" value="login" onclick="login()" /> 
        <input id="Button2" type="button" value="logout" onclick="logout()" /> 
    
        // These are the text-boxes whose value I want to retain. 
        First name:<br> 
        <input id=fname" type="text" name="firstname" value="Mickey"> 
        <br> 
        Last name:<br> 
        <input id="lname" type="text" name="lastname" value="Mouse"> 
    </body> 
    </html> 
    

    これらは、エッジでのこのコードのいくつかの問題がありますエッジ?

  2. ログイン用のポップアップウィンドウが常に表示されないのはなぜですか?
  3. 資格情報を入力した後、いつもポップは閉じません。私の仕事は何

答えて

1

です:

  • を呼び出す前にconfig.callbackpopUp=trueを設定AuthenticationContext(設定)も

URLが含まれていない場合は、handleWindowCallback()を呼び出すべきではありません#。コードは次のようになります。私はお勧め if (authenticationContext.isCallback(window.location.hash)) { authenticationContext.handleWindowCallback();

あなたが見ていると私はテストした次のサンプルを適応し、(そしてもちろんクロームの)どちらの場合も(と、ポップアップなし)エッジで働いていたこと:( https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof-ca/blob/master/TodoListSPA/app.js 構成はhttps://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof-ca/blob/master/TodoListSPA/appconfig.jsです)

+0

私はサンプルリンクを確認し、あなたが提案した通りに正確に行っています。さて、ログインしているユーザーのために、これらのことがうまく機能しています。しかし、エッジのプライベートウィンドウでは、コールバックは決して呼び出されません。ポップアップは閉じず、ポップアップのURLは次のようになります。https:// localhost:44315 /#id_token = eyJ0eXsV1cQiLPCJhxbGciOiJSUzI1NiIsI ....................... –

+1

はい、Edgeには既知の問題があります(ライブラリによるものではありません)。InPrivateの間にゾーン間をリダイレクトすると、ローカルストレージとセッションストレージが失われます。 Edgeは将来のリリースでストレージを修正する作業を行っています。一方、参照サイトとリダイレクトサイトが同じゾーンにあることを確認して、ゾーン間のリダイレクトを削除することで、問題を回避できます。 –

+0

エッジの非プライベートウィンドウでも機能しません。 –

関連する問題