asp.net core 2.1、C#app、C#web服务、access SQL数据库
我整个星期都在努力解决以下问题,希望有人能帮上忙。我的申请有三个部分asp.net core 2.1、C#app、C#web服务、access SQL数据库,c#,sql-server,.net-core,C#,Sql Server,.net Core,我整个星期都在努力解决以下问题,希望有人能帮上忙。我的申请有三个部分 SQL数据库(自己的机器) web服务(IIS计算机)和 应用程序本身(也在与web服务相同的IIS上) 应用程序与web服务对话,web服务从SQL数据库获取数据。我正在使用windows身份验证。当应用程序在我的机器上本地运行时,它会毫无问题地从web服务接收数据。当我在web服务器上托管应用程序(应用程序和web服务都托管在同一台机器上)时,我会收到401(身份验证)错误 在应用程序中,我获取当前windows用户在控制
System.Security.Claims.ClaimsPrincipal currentUser = this.User;
WindowsIdentity identity = (WindowsIdentity) currentUser.Identity;
要访问web服务(反过来访问数据库),我使用以下代码:
await WindowsIdentity.RunImpersonated(identity.AccessToken, async () =>
{
request = new HttpRequestMessage(HttpMethod.Get, uri);
});
我已在IIS上检查,当代码在服务器上运行时,我是否获得了正确的标识->我确实获得了Windows用户,而不是IIS AppPool用户(我以前在切换到使用System.Security.ClaimsPrincipal之前获得了该标识)
我知道问题在于,虽然我使用的是正确的用户,但身份没有传递给web服务。有什么想法吗?好的,经过大量的在线研究,我发现了这个问题。自2003年以来,Microsoft对中间人攻击实施了环回检查-这给我带来了问题,因为我的FQDN与URL基址不同。我已停用此检查(),现在我的凭据已正确通过。因为这是一个测试服务器,所以我对这个解决方案没有问题:)您可以在IIS中发布您的应用程序配置的提供程序吗。您使用Kerberos还是NTLM?您是否已正确配置SPN?如果是这样的话,也把它们贴出来。您的事件日志或日志文件中有什么可以显示给我们的吗?我的设置是“LandingPage\Application”,因为我只能有一个DNS条目(来自IT人员)。这意味着我有两个应用程序在同一页下。我检查了应用程序、登录页和服务器,它们都将System.Web.Security.SqlRoleProvider和System.Web.Security.WindowsTokenRoleProvider设置为继承。我找不到它的继承地。我正在使用NTLM。我刚刚重新启动了应用程序,在事件日志中根本没有任何条目。。。希望这些信息有帮助!对于身份验证,我将所有设置都设置为禁用,但Windows身份验证除外,Windows身份验证已启用,HTTP 401 Challange设置为启用