在我的Azure Web App中,我想通过使用他们的ClaimsIdentity来呼叫第三方API来冒充用户。第三方Web API允许Basic或Kerberos,我可以选择切换到第三方SDK,如果需要,可以使用Windows集成安全性。
我遇到的问题是模拟位,下面是我的代码。
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?
答案 0 :(得分:1)
当您使用Azure WebApp时,您将与基础架构和托管环境隔离开来 - 因此您无法启动类似“Windows服务”的操作。
如果您需要为单个用户使用Windows / Kerberos身份验证来访问Web应用程序后面的资源,则无法使用Azure WebApp。您应该将Azure VM与IIS一起使用,IIS是您域的成员服务器。然后,您可以将Web应用程序配置为接受基于声明的身份验证(例如,从Azure AD),并通过UPN和WindwosIdentity构造函数(> .NET 4.5)模拟您的内部域帐户。