2016-06-30 7 views
0

App Model v2を使用してユーザーが認証されているアプリケーションがあります。いくつかのルールに基づいて、ユーザーがアクセスを要求されているスコープが異なる場合があります。App Model V2でユーザーがアクセスしたスコープに基づくAddaptive UI

ユーザーがアクセスできる範囲に基づいてUIを調整したいと考えています。ユーザーがどの範囲に同意したかをどのように知ることができますか?

答えて

1

Azureから取得したアクセストークンをデコードできます。これには "scp"というクレームが含まれています。これは、ユーザーがアクセスできる範囲です。

戻ったトークン(ベアラトークンとして追加するもの)がある場合は、次の方法を使用してスコープの文字列[]を取得できます。あなたのコードで、いくつかのUIを表示または非表示にするには、文字列[]内で必要なスコープを確認できます:

private object GetScopeFromToken(string token) 
{ 
    string[] tokenParts = token.Split('.'); 
    if (tokenParts.Length < 3) 
    { 
     return new string[] { }; 
    } 
    string encodedToken = tokenParts[1]; 

    int leftovers = encodedToken.Length % 4; 
    if (leftovers == 2) 
    { 
     encodedToken += "=="; 
    } 
    else if (leftovers == 3) 
    { 
     encodedToken += "="; 
    } 
    encodedToken = encodedToken.Replace('-', '+').Replace('_', '/'); 
    var base64EncodedBytes = Convert.FromBase64String(encodedToken); 
    string decodedToken = Encoding.UTF8.GetString(base64EncodedBytes); 
    dynamic jwt = JsonConvert.DeserializeObject(decodedToken); 
    return jwt.scp.Value.Split(' '); 
} 
関連する問題