0

私はクライアント側がJavascriptで開発されたWebアプリケーションを持っています。私はすでに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> 

しかし、変数ユーザーは常にnullです。誰でも助けることができますか?

+0

あなたがアダル前にjQueryのへの参照を持っていますか、このブログの記事をご覧ください-adaljs-2758 –

答えて

3

これは、あなたが「Azure App」サービスの「認証/承認」機能を使用していると思われ、提供されたIDが紺碧の広告であると思われます。クライアントからのトークン(ブラウザのJavaScriptなど)にアクセスする場合や、ログインしたユーザーに関する豊富な情報を取得する場合は、認証済みのGET要求を/.auth/meエンドポイントに送信することもできます。下記の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

ありがとう、ヤン。それは私の問題をかなり解決しますが、あなたのコードを少し修正するだけです。私の状況は、アプリケーションの後半部分を生成する前にまずユーザー名を取得する必要があるということです。私が間違っていると私を修正します。おそらくこのアウトラッパーは、アプリケーション全体がロードされた後にこのコードを実行するように指示していますが、最終的なコードは、このようなものです:?https://www.itunity.com/article/calling-office-365-apis-jquery:

<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> 
関連する問題