教學課程:在 .NET MAUI 中使用角色型存取控制
本教學課程示範如何將應用程式角色新增至 NET Multi-platform App UI (.NET MAUI),並在識別碼權杖中進行接收。
在本教學課程中,您會了解如何:
- 存取識別碼權杖中的角色。
必要條件
在 .NET MAUI 中接收群組和角色宣告
設定客戶的租用戶之後,您可以在用戶端應用程式中擷取角色和群組宣告。 角色和群組宣告同時存在於識別碼權杖和存取權杖中。 存取權杖只會在用戶端所取得的 Web API 中進行驗證。 用戶端則不應驗證存取權杖。
.NET MAUI 需要檢查識別碼權杖中的應用程式角色宣告,以在用戶端實作授權。
在本教學課程系列中,您已建立 .NET MAUI 應用程式,並在其中開發 ClaimsView.xaml.cs 來處理 ClaimsView
資料。 在此檔案中,我們會檢查識別碼權杖的內容。 在下列程式碼片段中,檢查角色宣告的值:
若要存取角色宣告,您可以如下修改程式碼片段:
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;
注意
若要讀取識別碼權杖,您必須安裝 System.IdentityModel.Tokens.Jwt
套件。
如果您將使用者指派給多個角色,則角色字串會包含以逗號分隔的所有角色,例如 Orders.Manager, Store.Manager,...
。 請確定您建置的應用程式可處理下列條件:
- 權杖中沒有角色宣告
- 使用者尚未獲指派任何角色
- 將使用者指派給多個角色時,角色宣告中有多個值
為應用程式定義應用程式角色時,您必須為這些角色實作授權邏輯。
下一步
如需群組宣告以及使用應用程式角色或群組做出明智決策的詳細資訊,請參閱: