チュートリアル: .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,...
のように、すべてのロールがコンマで区切られて含まれています。 次の条件を処理するようにアプリケーションをビルドしてください。
- トークンにロール要求がない
- ユーザーがどのロールにも割り当てられていない
- 複数のロールにユーザーを割り当てる場合のロール要求内の複数の値
アプリのアプリ ロールを定義するときは、それらのロールの承認ロジックを実装する必要があります。
次のステップ
グループ要求の詳細と、アプリロールまたはグループの使用に関する情報に基づいた意思決定については、次を参照してください: