我最近將我的 .NET Core 3.1 MVC 應用程式從 Identity 遷移到 AAD,簡直不敢相信它是如此簡單!在下面添加并洗掉了對身份的參考:
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false)
.Build();
services.AddAuthentication(AzureADDefaults.AuthenticationScheme).AddAzureAD(options => config.Bind("AzureAd", options));
services.AddControllers();
但是 - 我將角色與身份一起使用。只有 3 - 用于裝飾具有屬性的控制器和方法以保護某些功能。如何在 AAD 中進行設定?
我看到 AAD 用戶可以分配到 AAD“組”,但是一旦用戶登錄,我如何在控制器或 Razor 頁面中獲取用戶的組成員身份?
uj5u.com熱心網友回復:
“一旦用戶登錄,我如何在控制器或 Razor 頁面中獲取用戶的組成員身份”
您正在嘗試使用 AAD 進行身份驗證,但希望根據登錄用戶的組成員身份手動執行代碼授權并將它們分配給您的App Roles。您可以將此授權程序委托給 AAD 本身。在 Azure 應用注冊中,你可以指定應用角色并將 AAD 組分配給每個角色。當用戶成功通過 AAD 身份驗證時,根據他們的組成員身份,他們會在宣告令牌上分配正確的應用程式角色,這些角色存在于:
http://schemas.microsoft.com/ws/2008/06/identity/claims/role
您可以在此處閱讀有關在 Azure 應用注冊中設定應用角色的資訊。然后,控制器和方法上的相同 Authorize 屬性裝飾[Authorize(Roles = "MyAppRoleName")]將繼續作業。
uj5u.com熱心網友回復:
@UserControl - 確實需要高級版。
這是我在便宜的情況下所做的。應用程式注冊/令牌配置/添加選項宣告,我添加了“組”。那里甚至還有一個“將組作為角色宣告發送”的復選框。現在它們在 User.Claims 下發送到應用程式。
在我的應用程式中,我檢查 Type = 'roles' 的宣告,然后通過 ClaimsIdentity.AddClaim() 分配給本地角色。現在控制器授權屬性和 Razor User.IsInRole() 按預期作業。耶!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412407.html
標籤:
