鑑於本人使用Windows身份驗證的WCF服務,我想冒充他們,並調用另一個WCF服務,像這樣:驗證當前經過身份驗證的Windows用戶具有委派權限
using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate())
{
// call another WCF service
}
我給自己定所有的配置設置,它工作正常,只要在客戶端,它們包括以下行:
client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation;
但是,我怎麼努力使用戶令牌具有委託權限調用之前驗證?即我不控制的客戶端設置了AllowedPersonationLevel?
如果他們沒有設置它,會引發各種奇怪的異常(如無法加載程序集X等)。
理想情況下,我想能夠做到以下幾點:
using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate())
{
if (UserDoesntHaveDelegationRights())
throw new SecurityException("No delegation rights");
// call another WCF service
}
注意WindowsIdentity.GetCurrent().ImpersonationLevel
總是等於TokenImpersonationLevel.Impersonation
,讓不幸的是,不是一種選擇。
是的,這就是我的想法 - 但WindowsIdentity.GetCurrent()。ImpersonationLevel總是等於模擬 – Gareth 2013-03-14 05:12:07