我目前正在尝试以不同域上的用户身份运行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,我无法帮助.
任何想法,将不胜感激.
我有一个使用Windows身份验证的SQL Server 2005命名实例,其中域组用作登录.域结构如下:
Forest1 Forest2
/ \ |
Domain1 Domain2 Domain3
Run Code Online (Sandbox Code Playgroud)
对象在以下域中组织:
Forest1.Domain1
Forest1.Domain2
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
用户可以成功远程连接.
sql-server sql-server-2005 windows-authentication cross-domain
精简版:
对于使用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服务器文件的文件权限?
一些相关细节:
http://localhost
它位于受信任的站点,因此不被识别为Intranet区域,因此没有通过身份.我还确定它作为此用户标识工作,因为它是具有文件权限的管理员用户. aspnet_regiis -i
.net 2.0和
aspnet_regiis -iru
.net 4.0.Trusted Connection=True
和数据库权限被授予Web服务器帐户,[domain]\[server]$
例如DGM\MyServer$
. 我看到有人在这里报告了这个问题 …
我有一个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
我想使用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
我正在为我的公司构建一个简单的内部应用程序,它需要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错误)
我一直在网上搜索并试图找到一个没有运气的解决方案.要么我没有找到它,要么我不太清楚我在读什么.任何帮助将不胜感激.
使用node.js作为客户端时,是否可以使用Windows集成身份验证连接到服务器(例如,连接到IIS时)?
我对此的搜索仅显示结果,其中node.js用作服务器.
我试图使用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
我一直认为,为了使用具有显式指定凭据的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) 我正在为我们的应用程序测试一些代理设置,但我需要测试需要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"凭据?
asp.net ×4
c# ×2
sql-server ×2
asp.net-mvc ×1
cross-domain ×1
dns ×1
fiddler ×1
iis ×1
iis-7 ×1
iis-7.5 ×1
node.js ×1
runas ×1
self-hosting ×1
sql ×1
windows ×1