0

我有一個Web應用程序,其中的客戶端是用Javascript開發的。我已經通過在portal.azure.com上進行配置,爲我的應用啓用了Azure AD登錄。然後,每當這個應用程序加載時,用戶都需要登錄,如果他們沒有。 我想在我的客戶端有一些Javascript,所以應用程序知道用戶名。這是我的代碼。如何從Javascript中檢索Azure Active Directory登錄的用戶信息?

<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.11/js/adal.min.js"></script> 
<script type="text/javascript"> 
var authContext = new AuthenticationContext({ 
     clientId: 'xxxx-xxx-xxxx', 
     postLogoutRedirectUri: window.location 
    }); 

    var user = authContext.getCachedUser(); 
    if (user) { 
     window.alert("Signed in as " + user.userName); 
    } else{ 
     window.alert("Failed to get the user information"); 
    } 
</script> 

然而,可變用戶總是空。任何人都可以幫忙嗎?

+0

你有阿達爾之前的jQuery參考看看這個博客帖子:https://www.itunity.com/article/calling-office-365-apis-jquery -adaljs-2758 –

回答

3

看起來您使用的是Azure應用服務的「身份驗證/授權」功能,身份提供的是天藍色的廣告。如果您想從客戶端訪問令牌(如瀏覽器中的JavaScript),或者如果您想獲得有關已登錄用戶的更豐富的信息集,則還可以向/.auth/me端點發送經過驗證的GET請求。下面的Javascript代碼得到用戶聲明供您參考:

<script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $.get("https://xxxxxx.azurewebsites.net/.auth/me", function (data, status) { 
       for (var key in data[0]["user_claims"]) { 
        var obj = data[0]["user_claims"][key]; 
        alert(obj["typ"]); //claim type in user_claims 
        alert(obj["val"]) //claim value in user_claims     
       } 
      }); 
     }); 
    </script> 
0

謝謝,嚴。這相當於解決了我的問題,只是對代碼進行了少許修改。我的情況是,我需要在生成應用程序的後期部分之前先檢索用戶名。所以,我刪除了外包裝 $(document).ready(function(){}。糾正我,如果我錯了。可能這個包裝告訴這個代碼塊在整個應用程序加載後運行,最終的代碼是這樣的:

<script src="https://code.jquery.com/jquery-1.11.3.js"></script> 
<script type="text/javascript"> 
$.get("https://xxxxx.azurewebsites.net/.auth/me", function (data) { 
     labeler = data[0]['user_id']; 
     window.alert("You logged in as " + data[0]['user_id']); 
    }); 
</script> 
相關問題