0
App Model v2を使用してユーザーが認証されているアプリケーションがあります。いくつかのルールに基づいて、ユーザーがアクセスを要求されているスコープが異なる場合があります。App Model V2でユーザーがアクセスしたスコープに基づくAddaptive UI
ユーザーがアクセスできる範囲に基づいてUIを調整したいと考えています。ユーザーがどの範囲に同意したかをどのように知ることができますか?
App Model v2を使用してユーザーが認証されているアプリケーションがあります。いくつかのルールに基づいて、ユーザーがアクセスを要求されているスコープが異なる場合があります。App Model V2でユーザーがアクセスしたスコープに基づくAddaptive UI
ユーザーがアクセスできる範囲に基づいてUIを調整したいと考えています。ユーザーがどの範囲に同意したかをどのように知ることができますか?
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(' ');
}