2017-09-04 7 views
2

사용자 확인을위한 자바 스크립트 라이브러리로 Azure Active Directory를 호출하는 ADAL.js을 사용하고 있습니다. 나는이에 대해 다음 코드를 사용하고 있습니다 : 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()를 호출하지 말아야 #. 코드가 있어야한다 : I 제안 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

가장자리의 비공개 창에서도 작동하지 않습니다. –