[英]Azure Active Directory - user's group claims are not up-to-date
我有一個.NET Core
webapp,它使用Azure Active Directory
對用戶進行身份驗證。 我已經在 Azure AD 中配置了應用程序訪問,然后我把它放在了我的Startup
class 中:
//Use Azure Active Directory OAuth 2.0 authentication
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options)); //AzureAD settings are stored in appsettings.json
這可以正常工作,用戶可以使用其 Azure AD 公司帳戶成功進行身份驗證。
但是,在我的一個控制器中,我需要檢查用戶所屬的security groups
,以執行一些安全檢查。 所以我使用這段代碼來檢查用戶是否屬於某個安全組:
var groupClaims = User.HasClaim(claim => claim.Type == "group" && claim.Value == mySecurityGroupUid);
這行得通……有點。
問題是User
object 中的Claim
集合僅在用戶注銷 web 應用程序並重新登錄時更新。 如果用戶沒有明確退出 webapp 並重新登錄,則聲明列表不會更新。
這是一個大問題,因為這意味着,例如,如果我從安全組中刪除了一個用戶,那么在用戶注銷之前,該更改將不會反映在我的 webapp 中。 這意味着用戶可能能夠訪問他不再被授權訪問的數據,因為 webapp 仍然認為他屬於舊組。
即使停止並重新部署 web 應用程序也不會更新組,我發現強制組更新的唯一方法是讓用戶明確注銷 web 應用程序並重新登錄。
所以我的問題是:
我通過使用此處發布的實現解決了這個問題:
https://stackoverflow.com/a/51210553/300741
這種方法使用 ram 支持的服務器端 object 來存儲 session 數據,因此不是所有用戶信息和聲明都在 cookie 中,而是存儲在服務器上,並且 cookie 僅包含服務器用於識別 Z21D6F40CFZE51E5121 的令牌. 這保證了當 webapp 重新啟動時會話被清除,解決了我的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.