2014-04-24 56 views
1

我正在使用Sitecore將第三方外部認證/單點登錄服務器返回到Web服務器。禁用Sitecore中的匿名用戶

集成文檔建議,當你從服務器獲取授權響應返回你創建自己的FormsAuthenticationTicket,那麼你就可以訪問票進入這樣用戶UserData

FormsAuthenticationTicket ticket = ((FormsIdentity) HttpContext.Current.User.Identity).Ticket; 

if (ticket != null) 
{ 
    string UserData = ticket.UserData; 
    ... 
} 

我的問題User.Identity將永遠是extranet\Anonymous User

有什麼辦法可以阻止匿名用戶作爲當前用戶使用。或者我將不得不創建自己的會員供應商才能使用它?

+0

您不需要另一個成員資格提供程序,但可能需要在您的身份驗證提供程序的回調中在您的代碼中進行新的登錄。該工單中包含的實際內容是什麼? – Steven

+0

好的,謝謝我會試一試。門票包含用戶信息 - 如地址詳細信息等,並且需要對合規性進行加密 –

+0

我想你可以根據回調數據創建一個Sitecore用戶或以其他方式使用通用用戶 – Steven

回答

2

您可以通過使用Sitecore.Security.Authentication.AuthenticationManager來構建虛擬用戶並將該用戶分配給Sitecore中的真實角色,從而避免創建自定義成員資格提供者。這樣,您就可以通過拒絕讀取訪問extranet\anonymous用戶帳戶和啓用限制未經身份驗證的用戶(訪問閱讀您的自定義外聯網角色的訪問代碼(驗證用戶名/密碼後)將是這樣的:

using Sitecore.Security.Authentication; 

var user = AuthenticationManager.BuildVirtualUser("someone", isAuthenticated: true); 
user.RuntimeSettings.AddedRoles.Add("extranet\\some role"); 
AuthenticationManager.LoginVirtualUser(user); 
+0

針對虛擬用戶的+1 ,defo的方式去,沒有頭疼的維護假用戶名單 – jammykam

+0

謝謝,夥計們。這看起來像要走的路,肯定會滿足要求。 –

1

我已經做了類似的使用WIF模塊。當我從系統收回票證時,我從票證中提取有關用戶的數據。然後,我爲該帳戶創建/更新了Sitecore用戶(我可以使用虛擬用戶,但在這種情況下,我希望這些帳戶成爲真正的Sitecore帳戶)。

最後一步是顯式調用Login以確保當前上下文用戶是新創建的用戶。