2017-06-06 7 views
0

次の例を複製しようとしています。https://github.com/Azure-Samples/active-directory-dotnet-windows-store(Azure ADに対してWindowsストアアプリケーションを認証しています)が、WebアプリケーションをAzure関数で置き換えています。関数内でAzure関数で認証するWindowsストアアプリケーション

、ユーザーがログインしているかどうかをチェックするコードは次のとおりです。

ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/scope").Value.Contains("user_impersonation")) 

が、これは必要な値が含まれていない、と他の呼び出しは任意の値を返すのいずれか(例えばClaimsPrincipalはありません.Current.FindFirst(ClaimTypes.GivenName));

あなたは何が起こっているか考えていますか?

答えて

0

Web AppまたはAzure関数でコードを実行するかどうかは関係ありません。根本的な理由は、あなたがトークンを取得する方法との違いです。

Azure ADでAzure関数を保護し、要求にトークンを関連付けると、トークンを解析してトークン内のクレームを読み取り、ClaimsPrincipalオブジェクトを構築します。

this siteのトークンを解析して、トークンに期待したクレームがあるかどうかを確認できます。

0

は範囲は、特許請求の範囲のリストにないことをhttps://github.com/Azure-Samples/active-directory-dotnet-daemon/issues/1

この問題を参照してください。あなたはあなたが取得したすべてのクレームをダンプし、利用可能なものを見るために次のことを試すことができます。

foreach (Claim claim in ClaimsPrincipal.Current.Claims) 
{ 
    log.Info("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value); 
} 
関連する問題