次の方法で共有


チュートリアル: .NET MAUI でロールベースのアクセス制御を使用する

このチュートリアルでは、アプリ ロールを .NET マルチプラットフォーム アプリ UI (.NET MAUI) に追加し、ID トークンで受け取る方法について説明します。

このチュートリアルでは、次の作業を行う方法について説明します。

  • ID トークン内のロールにアクセスします。

前提条件

.NET MAUI でグループとロールの要求を受信する

顧客のテナントを構成したら、クライアント アプリで "ロール" と "グループ" の要求を取得できます。 ロールとグループの要求は、どちらも ID トークンとアクセス トークンに存在します。 アクセス トークンは、クライアントによって取得された Web API でのみ検証されます。 クライアントはアクセス トークンを検証してはなりません。

.NET MAUI は、クライアント側で承認を実装するために、ID トークン内のアプリ ロール要求に対してチェックする必要があります。

このチュートリアル シリーズでは、ClaimsView データを処理する ClaimsView.xaml.cs を開発した .NET MAUI アプリを作成しました。 このファイルでは、ID トークンの内容を調べます。 ロール要求の値は、次のコード スニペットで確認されます:

ロール要求にアクセスするには、次のようにコード スニペットを変更します:

var idToken = PublicClientSingleton.Instance.MSALClientHelper.AuthResult.IdToken;
var handler = new JwtSecurityTokenHandler();
var token = handler.ReadJwtToken(idToken);
// Get the role claim value
var roleClaim = token.Claims.FirstOrDefault(c => c.Type == "roles")?.Value;

if (!string.IsNullOrEmpty(roleClaim))
{
    // If the role claim exists, add it to the IdTokenClaims
    IdTokenClaims = new List<string> { roleClaim };
}
else
{
    // If the role claim doesn't exist, add a message indicating that no role claim was found
    IdTokenClaims = new List<string> { "No role claim found in ID token" };
}

Claims.ItemsSource = IdTokenClaims;

Note

ID トークンを読み取るために、System.IdentityModel.Tokens.Jwt パッケージをインストールする必要があります。

複数のロールにユーザーを割り当てる場合、ロール文字列には、Orders.Manager, Store.Manager,... のように、すべてのロールがコンマで区切られて含まれています。 次の条件を処理するようにアプリケーションをビルドしてください。

  • トークンにロール要求がない
  • ユーザーがどのロールにも割り当てられていない
  • 複数のロールにユーザーを割り当てる場合のロール要求内の複数の値

アプリのアプリ ロールを定義するときは、それらのロールの承認ロジックを実装する必要があります。

次のステップ

グループ要求の詳細と、アプリロールまたはグループの使用に関する情報に基づいた意思決定については、次を参照してください: