0

在我的Azure Web App中,我想通過使用他們的ClaimsIdentity來模擬用戶來調用第三方API。第三方Web API允許使用基本或Kerberos,如果需要,我可以選擇切換到使用Windows集成安全性的第三方SDK。Azure Web App Web API模仿使用ClaimsIdentity的用戶

我遇到的問題是模擬位,下面是我的代碼,因爲它是。

var webUser = HttpContext.Current.User.Identity as ClaimsIdentity; 

var windowsIdentity = S4UClient.UpnLogon(webUser.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.Upn)).Value); 

using (var impersonationContext = windowsIdentity.Impersonate()) 
{ 
    //make call to 3rd party Web API or SDK 
} 

當運行上面我得到以下錯誤:

The pipe endpoint 'net.pipe://localhost/s4u/022694f3-9fbd-422b-b4b2-312e25dae2a2' could not be found on your local machine. 

一切我讀過點啓動C2WTS Windows服務,有沒有開始爲Azure的web應用程序這種服務方式?如果不是,我該如何去冒充用戶或將憑據傳遞給我的第三方api/sdk?

回答

1

當您使用Azure WebApp時,您與基礎架構和主機環境隔離 - 因此您無法啓動類似「Windows服務」的內容。

如果您需要爲單個用戶使用Windows/Kerberos身份驗證來訪問Web應用程序後面的資源,則無法使用Azure WebApp。您應該將Azure VM與IIS一起使用,該IIS是您的域的成員服務器。然後,您可以將Web應用程序配置爲接受基於聲明的身份驗證(例如來自Azure AD),並通過UPN和WindwosIdentity構造函數(> .NET 4.5)模擬您的內部域帳戶。

+0

這可以在雲服務Web角色中完成嗎? – Alan