工具
myWebApp:ASP.NET Core 1.1 MVC
带有IdentityServer4的myAuthApp
MS SQL Server 2012
Win2012服务器上的IIS 8
我们想要什么:
找出NTUser(内联网)正在使用该应用程序从sqlserver-db获取userinfo(通过搜索NTUserName)而没有任何登录对话框
我们拥有什么
使用asp.net模拟(IIS身份验证)的一个网站(WinAuthApp)仅提供带有return User.Identity.Name
的NTUser-Name
和一个带有匿名身份验证的网站(我们的WebAPP)可以通过AppPool Identity访问SQLServer。此WebApp重定向(在没有身份验证令牌的情况下请求)到我们的AuthApp以检查身份。 AuthApp向WinAuthApp询问用户名并在数据库中搜索权限标记并构建标识并为其生成标记。使用此身份验证令牌,它将返回到WebApp并立即进行身份验证。外部用户提供Name和Passwort并获取访问WebApp的令牌
这种方法的问题
当外部用户访问webApp并且AuthApp要求WinAuthApp(配置了WindowsAuthentication)时,他们会获得NT-Login屏幕,而不是WebApp"外部登录页面"。一个禁忌是:intranetuser不应该获得登录对话框。 (webApp必须立即回复链接并打开请求的页面。)
的摘要
如何配置我的AuthApp(IdentityServer4)以访问当前的NTUser(IF请求来自Intranet),但主要用作AppPool-Identity(特别是用于DB-Access)
答案 0 :(得分:0)
我明白了:
在Web.config中设置forwardWindowsAuthToken="true"
,然后将WindowsAuthentication设置为true,并将asp.net模拟设置为false。
然后使用appPool-Acount访问SQL-Server,并在应用程序context.User.Identity.Name
中为用户提供NT-Account。
这并不困难,但我总是将WinAuth和Impersonation设置为同步。不知道为什么。