标签: windows-authentication

SQL Server Management Studio 2008通过VPN在不同域上运行用户

我目前正在尝试以不同域上的用户身份运行SQL Server Management Studio 2008.我注意到在其他线程中,从批处理脚本运行以下命令将执行此操作,但它似乎对我不起作用.

runas /netonly /user:DOMAIN\USER "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"
Run Code Online (Sandbox Code Playgroud)

我被要求输入密码,登录屏幕出现,但Windows身份验证用户名和密码仍然是本地域上当前登录的模拟用户的错误.无论如何,尝试连接到其他域上的数据库都是不成功的.

这对大多数人来说似乎都有用,对我而言,这个域的存在是通过VPN连接存在的.我无法在"网上邻居"中查看VPN域网络计算机,因此无法在"控制面板"中添加用户.

不幸的是,我的操作系统是Vista Business,我无法帮助.

任何想法,将不胜感激.

sql dns windows-authentication runas sql-server-2008

26
推荐指数
1
解决办法
2万
查看次数

使用Windows身份验证的跨域SQL Server登录

我有一个使用Windows身份验证的SQL Server 2005命名实例,其中域组用作登录.域结构如下:

      Forest1                Forest2
      /      \                  |
Domain1       Domain2        Domain3
Run Code Online (Sandbox Code Playgroud)

对象在以下域中组织:

Forest1.Domain1

  • 用户
  • 全球团体

Forest1.Domain2

  • SQL Server实例
  • 域本地组(用作登录)

Forest2.Domain3

  • 用户
  • 全球团体

我的所有用户都存在Domain1,Domain3但SQL Server框中存在Domain2.因此,我的登录名是域组Domain2.当用户in Domain1添加到域本地组Domain2并尝试使用TCP/IP协议连接到SQL Server实例时,他收到以下错误消息:

无法连接到<instance>.用户'Domain1\userName'登录失败.(Microsoft SQL Server,错误:18456)

我试过的其他事情:

  • 如果我明确地将用户添加为登录,他可以连接.

  • 如果我Domain1明确地添加用户作为成员的全局组,则可以连接.

  • 如果我添加一个Domain1用户所属的Domain2全局组作为用作登录的域本地组的成员,则无法连接.

  • 编辑:如果我将Domain2域本地组添加到Domain2托管SQL Server实例的服务器上的Demote Desktop Users组,Domain1用户可以成功连接到服务器 - 我也可以作为Domain1用户本地连接到该实例(只是不远程).

  • 编辑:如果我将Domain2域本地组添加到本地服务器组并为该本地服务器组创建SQL Server登录,则Domain1用户仍然无法远程连接到该实例.

  • 编辑:如果我将连接网络协议更改为"命名管道",则Domain1用户可以成功远程连接.


根据我的理解(参考这些TechNet文章:组范围嵌套组 …

sql-server sql-server-2005 windows-authentication cross-domain

26
推荐指数
1
解决办法
5万
查看次数

具有Windows身份验证的IIS 7.5 Web应用程序是否要求最终用户具有文件权限?

精简版:

对于使用Windows身份验证的IIS 7.5 Web应用程序,最终用户是否需要具有读取文件访问权限?

长版:

我有一个使用Windows身份验证的Intranet ASP.NET Web应用程序.它安装在许多不同的公司,通常认证工作正常:用户导航到网站,例如http://appserver/MyApp,应用程序识别他们登录的人,并相应地显示页面.我刚刚在新客户端安装它并遇到问题:

连接时,例如http://appserver/MyApp我提示我输入Windows凭据,但输入后我会反复提示.在几次重新输入凭证后,我显示了一个401错误页面,上面写着"401 - 未经授权:由于凭证无效而拒绝访问".因此,它不仅没有通过我的身份,但即使输入用户名和密码,它仍然拒绝访问.

为应用程序的最终用户提供读取和执行权限可以解决此问题,但我认为这根本不是必需的.

在Windows应用程序事件日志中,有一条消息"请求的文件授权失败"以及线程帐户名称:NT AUTHORITY\NETWORK SERVICE和用户:[正确的工作站用户的域帐户].这表明文件访问是使用用户的身份执行的,而不是网络服务的AppPool身份.果然,如果我将最终用户的读取和执行权限(我没有尝试只读)授予应用程序的目录,那么一切正常:当用户浏览到站点时,他们会自动进行身份验证,而不是提示,以及网站正确认识他们的身份!因此,我的解决方案是在应用程序目录中为Everybody提供Read&Execute权限......但这不是一个理想的解决方案.

这看起来很奇怪.在IIS 7.5之前,我从来没有必要这样做,据我所知,在IIS 6或IIS 7中绝对不需要.这是一个新的IIS7.5吗?文档说默认情况下模拟已关闭.我在web.config中添加了一个元素,以确保删除了除Network Service之外的文件权限,但问题仍然存在.

有什么想法吗?IIS 7.5上的Windows Authenticated站点是否正常,以便最终用户需要Web服务器文件的文件权限?

一些相关细节:

  • 网络服务对应用程序文件夹具有完全控制文件权限.
  • 当从服务器本身连接时,我被提示输入凭据但在输入后我已经过身份验证并且应用程序正常运行,包括显示我的Windows登录以及连接和从数据库检索数据.后来我确定它提示凭据,因为http://localhost它位于受信任的站点,因此不被识别为Intranet区域,因此没有通过身份.我还确定它作为此用户标识工作,因为它是具有文件权限的管理员用户.
  • Web服务器正在运行Windows Server 2008 R2/IIS 7.5.在我安装它之前它没有IIS.我安装了默认功能以及Windows身份验证,ASP.NET以及其他一些项目.我安装的单独的WCF应用程序使用IIS,匿名身份验证和.net 2.0在该Web服务器上运行正常.
  • 应用安装过程是文件的手动副本,IIS应用程序池和Web应用程序的创建,更新连接字符串等.
  • 我检查了IE安全设置.它将服务器识别为Intranet区域,并选择了"仅在Intranet区域中自动登录"选项.此外,在高级设置上,选中了"启用集成Windows身份验证"选项.
  • 安装IIS后,我运行aspnet_regiis -i.net 2.0和 aspnet_regiis -iru.net 4.0.
  • 我的应用程序禁用了匿名身份验证,并启用了Windows身份验证.
  • 该应用程序在ASP.NET v4上运行,但我安装的另一个应用程序遇到运行ASP.NET v2的相同问题.
  • 该应用程序以Identity = Network Service和32位模式运行.
  • 数据库连接字符串包括Trusted Connection=True和数据库权限被授予Web服务器帐户,[domain]\[server]$ 例如DGM\MyServer$.
  • 在IIS>身份验证> Windows身份验证>提供程序中,列表首先是协商,然后是NTLM.我尝试重新排序,所以NTLM是第一个.
  • 在Windows安全事件日志中,有一系列Microsoft Windows安全审核事件:登录和注销.他们表示登录成功并显示工作站用户的用户ID.这是从我从另一个工作站连接并在多次尝试后收到401 Unauthorized时.

我看到有人在这里报告了这个问题 …

asp.net iis windows-authentication iis-7.5

26
推荐指数
3
解决办法
3万
查看次数

使用表单身份验证进行模拟

我有一个ASP.NET站点,必须使用表单身份验证而不是Windows身份验证来访问ActiveDirectoryMembershipProvider.该站点必须使用表单,因为它们需要设计的输入表单,而不是Windows身份验证使用的浏览器身份验证弹出窗口.

该站点需要模拟通过Active Directory登录的用户访问用户特定文件.

但是,WindowsIdentity.GetCurrent()由于是不一样的HttpContext.Current.User.Identity,虽然我的web.config包括:

<authentication mode="Forms">
    <forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
Run Code Online (Sandbox Code Playgroud)

我无法使用LoginUser(),WindowsIdentity.Impersonate()因为我需要冒充AD用户来获取他们的特定权限,而我不知道用户的密码,因为Forms负责登录.

是否可以从login.aspx.cs获取System.Web.UI.WebControls.Login.Password,然后将LoginUser()令牌保存在会话变量中以供WindowsIdentity.Impersonate()日后使用?或者可能采用更安全的方法冒充正确的方法?

我很困惑为什么表单身份验证不能自动 <identity impersonate="true" />

我已阅读此http://msdn.microsoft.com/en-us/library/ms998351.aspx但它使用Windows身份验证.

asp.net impersonation forms-authentication active-directory windows-authentication

25
推荐指数
1
解决办法
2万
查看次数

如何在asp.net中使用Windows身份验证获取用户名?

我想使用Windows身份验证获取用户名

实际上我实现了"以不同用户身份登录",单击此按钮时,Windows安全性将出现在那里我们可以提供凭据.

在那个时候,如果我提供一些其他凭证,它只采用当前用户名.如何从Windows安全性获取给定的凭据用户名?

IIS中的主机应用程序然后禁用匿名身份验证并启用了Windows身份验证.

web.config中:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
  <identity impersonate="true"/>
  <authorization>
      <allow users="*"/>
      <deny users="*"/>
  </authorization>
</system.web>
<system.webServer>
    <directoryBrowse enabled="true" />
    <security>
        <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
Run Code Online (Sandbox Code Playgroud)

的.cs

在这里,我总是得到默认的用户名

string fullName = Request.ServerVariables["LOGON_USER"];
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢

c# asp.net authorization windows-authentication windows-security

25
推荐指数
4
解决办法
10万
查看次数

IIS 7.5中的Windows身份验证失败

我正在为我的公司构建一个简单的内部应用程序,它需要Windows身份验证才能实现安全性.禁用所有其他身份验证模式.我陷入了这样的情况,即Internet Explorer会提示输入凭据3次,然后失败并出现此错误:

未经授权

HTTP错误401.请求的资源需要用户身份验证.

然后我创建了一个简单的网站来测试它.我在IIS中创建了一个新站点,将其放在自己的端口(:8111,随机选择),在其中放置一个静态"default.htm"文件,禁用匿名身份验证,然后启用Windows身份验证.其他所有内容都保留默认设置.分配端口号是因为我们在此计算机上有多个站点共享相同的IP.

以下是一些场景:

  • 从Web服务器本身浏览到http:// localhost:8111 /工作正常

  • 从另一台计算机浏览到http:// ServerIPaddress:8111 /工作正常

  • 从另一台计算机浏览到http:// ServerName:8111/FAILS(请求凭据3次,然后给出401错误)

我一直在网上搜索并试图找到一个没有运气的解决方案.要么我没有找到它,要么我不太清楚我在读什么.任何帮助将不胜感激.

iis-7 windows-authentication windows-server-2008

24
推荐指数
4
解决办法
4万
查看次数

node.js客户端中的Windows集成身份验证

使用node.js作为客户端时,是否可以使用Windows集成身份验证连接到服务器(例如,连接到IIS时)?

我对此的搜索仅显示结果,其中node.js用作服务器.

windows windows-authentication node.js node.js-client

24
推荐指数
2
解决办法
3万
查看次数

具有Windows身份验证的ASP.NET Web API自主机

我试图使用ASP.NET Web API自我主机选项与Windows身份验证,以便我可以确定登录用户,并最终根据用户的身份接受或拒绝用户.这是我的控制台应用程序代码:

using System;
using System.Web.Http;
using System.Web.Http.SelfHost;

namespace SelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            var config = new HttpSelfHostConfiguration("http://myComputerName:8080");
            config.UseWindowsAuthentication = true;

            config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{id}",
                new { id = RouteParameter.Optional });

            using (HttpSelfHostServer server = new HttpSelfHostServer(config))
            {
                server.OpenAsync().Wait();

                Console.WriteLine("Press Enter to quit.");
                Console.ReadLine();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是控制器:

[Authorize]
public class HelloController : ApiController
{
    public string Get()
    {
        // This next line throws an null reference exception if the Authorize
        // …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc windows-authentication self-hosting asp.net-web-api

23
推荐指数
1
解决办法
2万
查看次数

数据库+ Windows身份验证+用户名/密码?

我一直认为,为了使用具有显式指定凭据的Windows身份验证连接到SQL服务器,您必须使用LogonUser,Impersonate,然后连接.

在我看来,这个链接表明,只需在连接字符串中指定"uid = ...; pwd = ..."就可以连接到SQL服务器而不需要这么麻烦.我测试了这种方法只是为了确保它不起作用,而且 - 看哪 - 它没有.如果那个博客文章不在msdn.com上,我会把它当作noob talk解雇,但确实如此.

有谁知道我错过了什么?

编辑1:许多受访者误解了我的意思.这是我所说的复制/粘贴.它不是集成的SQL,也不是由IIS制作的ASP.NET模拟:

string sql4 = String.Format(
   @"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server);     
// Database + Windows Authentication + Username/Password
Run Code Online (Sandbox Code Playgroud)

sql-server authentication windows-authentication

22
推荐指数
2
解决办法
7万
查看次数

使用fiddler和Windows身份验证

我正在为我们的应用程序测试一些代理设置,但我需要测试需要Windows身份验证(或网络凭据)的代理.

为了进行测试,我将代理的凭据分配给网络凭据

System.Net.WebProxy proxy = new System.Net.WebProxy("127.0.0.1", 8888);
proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
//proxy.Credentials = new System.Net.NetworkCredential("1", "1");
System.Net.WebRequest.DefaultWebProxy = proxy;
Run Code Online (Sandbox Code Playgroud)

目前,我使用Fiddler Require Proxy Authentication打开规则.如何配置Fiddler以便我可以使用Windows凭据而不是默认的"1"/"1"凭据?

c# windows-authentication fiddler

22
推荐指数
2
解决办法
2万
查看次数