如何从Javascript中检索Azure Active Directory登录的用户信息?

时间:2017-06-15 00:07:46

标签: javascript azure web-applications azure-web-sites azure-active-directory

我有一个网络应用程序,客户端是用Javascript开发的。我已经在portal.azure.com上配置了我的应用程序的Azure AD登录。然后,每次加载此应用程序时,如果用户没有,则需要用户登录。 我想在我的客户端有一些Javascript,所以应用程序知道用户名。这是我的代码。

{{1}}

但是,变量 user 始终为null。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

您似乎正在使用azure app服务的“身份验证/授权”功能,并且身份提供的是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>

答案 1 :(得分: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>