138 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
    <title>Microsoft Authentication</title>
 | 
						|
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>
 | 
						|
    <script src="https://secure.aadcdn.microsoftonline-p.com/lib/0.2.3/js/msal.js"></script>
 | 
						|
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
 | 
						|
</head>
 | 
						|
 | 
						|
<body>
 | 
						|
<h4 id="WelcomeMessage"></h4>
 | 
						|
<button id="SignIn" onclick="signIn()">Sign In</button>
 | 
						|
<br/><br/>
 | 
						|
<pre id="json"></pre>
 | 
						|
 | 
						|
<script>
 | 
						|
    var applicationConfig = {
 | 
						|
        clientID: "24d81a32-6a9a-4f5c-b7cc-53bc1ba178c7",
 | 
						|
        authority: "https://login.microsoftonline.com/common",
 | 
						|
        graphScopes: ["user.read"],
 | 
						|
        graphEndpoint: "https://graph.microsoft.com/v1.0/me"
 | 
						|
    };
 | 
						|
 | 
						|
    var myMSALObj = new Msal.UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, acquireTokenRedirectCallBack,
 | 
						|
        {storeAuthStateInCookie: true, cacheLocation: "localStorage"});
 | 
						|
 | 
						|
    function signIn() {
 | 
						|
        myMSALObj.loginPopup(applicationConfig.graphScopes).then(function (idToken) {
 | 
						|
            //Login Success
 | 
						|
            showWelcomeMessage();
 | 
						|
            acquireTokenPopupAndCallMSGraph();
 | 
						|
        }, function (error) {
 | 
						|
            console.log(error);
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    function signOut() {
 | 
						|
        myMSALObj.logout();
 | 
						|
    }
 | 
						|
 | 
						|
   function acquireTokenPopupAndCallMSGraph() {
 | 
						|
        //Call acquireTokenSilent (iframe) to obtain a token for Microsoft Graph
 | 
						|
        myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
 | 
						|
            callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
 | 
						|
        }, function (error) {
 | 
						|
            console.log(error);
 | 
						|
            // Call acquireTokenPopup (popup window) in case of acquireTokenSilent failure due to consent or interaction required ONLY
 | 
						|
            if (error.indexOf("consent_required") !== -1 || error.indexOf("interaction_required") !== -1 || error.indexOf("login_required") !== -1) {
 | 
						|
                myMSALObj.acquireTokenPopup(applicationConfig.graphScopes).then(function (accessToken) {
 | 
						|
                    callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
 | 
						|
                }, function (error) {
 | 
						|
                    console.log(error);
 | 
						|
                });
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    function callMSGraph(theUrl, accessToken, callback) {
 | 
						|
        var xmlHttp = new XMLHttpRequest();
 | 
						|
        xmlHttp.onreadystatechange = function () {
 | 
						|
            if (this.readyState == 4 && this.status == 200)
 | 
						|
                callback(JSON.parse(this.responseText));
 | 
						|
        }
 | 
						|
        xmlHttp.open("GET", theUrl, true); // true for asynchronous
 | 
						|
        xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
 | 
						|
        xmlHttp.send();
 | 
						|
    }
 | 
						|
 | 
						|
    function graphAPICallback(data) {
 | 
						|
        //Display user data on DOM
 | 
						|
        var divWelcome = document.getElementById('WelcomeMessage');
 | 
						|
        //divWelcome.innerHTML += " to Microsoft Graph API!!";
 | 
						|
        document.getElementById("json").innerHTML = JSON.stringify(data, null, 2); 
 | 
						|
    }
 | 
						|
 | 
						|
    function showWelcomeMessage() {
 | 
						|
        var divWelcome = document.getElementById('WelcomeMessage');
 | 
						|
        //divWelcome.innerHTML += 'Welcome ' + myMSALObj.getUser().name;
 | 
						|
        var loginbutton = document.getElementById('SignIn');
 | 
						|
        loginbutton.innerHTML = 'Sign Out';
 | 
						|
        loginbutton.setAttribute('onclick', 'signOut();');
 | 
						|
    }
 | 
						|
 | 
						|
    // This function can be removed if you do not need to support IE
 | 
						|
    function acquireTokenRedirectAndCallMSGraph() {
 | 
						|
        //Call acquireTokenSilent (iframe) to obtain a token for Microsoft Graph
 | 
						|
        myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
 | 
						|
          callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
 | 
						|
        }, function (error) {
 | 
						|
            console.log(error);
 | 
						|
            //Call acquireTokenRedirect in case of acquireToken Failure
 | 
						|
            if (error.indexOf("consent_required") !== -1 || error.indexOf("interaction_required") !== -1 || error.indexOf("login_required") !== -1) {
 | 
						|
                myMSALObj.acquireTokenRedirect(applicationConfig.graphScopes);
 | 
						|
            }
 | 
						|
        }); 
 | 
						|
    }
 | 
						|
 | 
						|
    function acquireTokenRedirectCallBack(errorDesc, token, error, tokenType)
 | 
						|
    {
 | 
						|
     if(tokenType === "access_token")
 | 
						|
     {
 | 
						|
         callMSGraph(applicationConfig.graphEndpoint, token, graphAPICallback);
 | 
						|
     } else {
 | 
						|
            console.log("token type is:"+tokenType);
 | 
						|
     } 
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    // Browser check variables
 | 
						|
    var ua = window.navigator.userAgent;
 | 
						|
    var msie = ua.indexOf('MSIE ');
 | 
						|
    var msie11 = ua.indexOf('Trident/');
 | 
						|
    var msedge = ua.indexOf('Edge/');
 | 
						|
    var isIE = msie > 0 || msie11 > 0;
 | 
						|
    var isEdge = msedge > 0;
 | 
						|
 | 
						|
    //If you support IE, our recommendation is that you sign-in using Redirect APIs
 | 
						|
    //If you as a developer are testing using Edge InPrivate mode, please add "isEdge" to the if check 
 | 
						|
    if (!isIE) {
 | 
						|
        if (myMSALObj.getUser()) {// avoid duplicate code execution on page load in case of iframe and popup window.
 | 
						|
            showWelcomeMessage();
 | 
						|
            acquireTokenPopupAndCallMSGraph();
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else {
 | 
						|
        document.getElementById("SignIn").onclick = function () {
 | 
						|
            myMSALObj.loginRedirect(applicationConfig.graphScopes);
 | 
						|
        };
 | 
						|
 | 
						|
        if (myMSALObj.getUser() && !myMSALObj.isCallback(window.location.hash)) {// avoid duplicate code execution on page load in case of iframe and popup window.
 | 
						|
            showWelcomeMessage();
 | 
						|
            acquireTokenRedirectAndCallMSGraph();
 | 
						|
        }
 | 
						|
    }
 | 
						|
</script>
 | 
						|
</body>
 | 
						|
</html>
 |