Tag: 认证

如何通过WebRequest调用MVC操作并通过Active Directoryvalidation请求?

我知道标题是满口的。 我已经掌握了大部分的东西。 我只需要确认我是否可以做我正在尝试的事情。 我正在使用ASP.NET MVC 3.我有一个应用程序,它具有我使用的控制器,就像一个Web服务。 控制器上有一个方法,它返回一个字符串,即json。 此方法根据活动目录对用户进行身份validation。 对上述应用程序执行WebRequest的应用程序也是MVC应用程序。 此应用程序(为了在没有特定用户名和密码的情况下查询AD)正在web.config中使用模拟。 该应用程序模拟有权查询AD的帐户; 但是,页面上用户的信息(例如他们所在的组)是我validation的。 简而言之(我并不完全理解这一部分),模仿是严格的,因此ASP.NET可以查询Active Directory。 当我查询活动目录以获取其信息时,加载页面的用户仍被视为自己。 AD代码如下所示(此代码有效): public static ADUserInfo GetUserInfo(IPrincipal User) { StringBuilder userAdInfo = new StringBuilder(); ADUserInfo userInfo = new ADUserInfo(); String domain = ConfigurationManager.AppSettings[“ADdomain”]; try { using (var context = new PrincipalContext(ContextType.Domain, domain)) { if (User == null) userAdInfo.AppendLine(“User is null.”); else if […]

Web服务请求身份validation

我们真的被困在这里,所以我决定请你帮忙。 昨天我被要求帮助使用Web服务,获取WSDL的URL以及要使用的用户凭据。 我从来没有真正与网络服务有任何关系,但对他们有一个大致的想法,并看到一些例子,我认为它不会那么糟糕。 显然我错了,因为我现在被困住了。 一切似乎都很好,代理类(或客户端)已生成,构建请求并发送它们也很好,除了身份validation部分。 我们似乎无法弄明白该怎么做。 使用: client.ChannelFactory.Credentials.UserName.UserName = “myusername”; client.ChannelFactory.Credentials.UserName.Password = “mypassword”; 似乎没有用。 (当我检查由client.Endpoint.Binding.CreateBindingElements()返回的BindingElementCollection时,没有SecurityBindingElement) 我已经尝试了很多其他方法,但我认为我缺少一些基本的东西,缺乏文档也没有真正帮助。 所以问题是:如何使用WCF调用Web服务时发送用户名和密码? 编辑:只是为了澄清,请求应包含类似于此的内容: username 1DiaGTkOLk/CZhDaEpbkAaKRfGw= 6ApOnLn5Aq9KSH46pzzcZA== 2009-05-13T18:59:23.309Z

ASP.Net Identity 2.0 AccessFailedCount不递增

昨晚我正在使用FormsAuthentication开发一个新项目,并且正在自定义票证以包含安全令牌,因此如果用户在一个浏览器中注销,则会在所有这些注册表中注销。 在查看ASP.net Identity的最新版本时,看起来它已经内置了这个function。 我创建了一个新的测试MVC 5 Web应用程序,启用了个人帐户。 注册和身份validation开箱即用。 但是,我注意到失败的登录尝试没有增加AspNetUsers表中的AccessFailedCount字段。 由于这不会增加,我可以尝试尽可能多的失败登录尝试,而不会让帐户被锁定。 如何在ASP.net Identity 2.0上启用AccessFailedCount和Lockoutfunction?

你如何登录网页并在C#中检索其内容?

你如何登录网页并在C#中检索其内容?

.Net Core 2.0中的Windows和匿名身份validation

我正在尝试在.Net Core 2.0空Web应用程序中混合使用Windows和匿名身份validation。 我想避免[Authorize]属性,因为我不想使用Mvc或控制器。 我的设置如下: 我创建了一个空的.Net Core 2.0 Web应用程序 我去项目属性 – >调试 – >选中“启用Windows身份validation”并禁用“启用匿名身份validation”。 现在“windowsAuthentication”:true和“anonymousAuthentication”:false出现在我的“IIS”下的launchSettings.json中。 在Startup.cs中,我在ConfigureServices中添加了services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme); 如https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x#windows-authentication-httpsys–iisintegration中所述 我添加了一个简单的Console.WriteLine(context.User.Identity.Name); 看到它在app.Run内部工作,并且……一切正常! 但是……一旦我在launchSettings.json中将“anonymousAuthentication”设置为true,它就会停止工作,我无法弄清楚我可以做些什么来使Windows身份validation与它一起工作。 Context.User.Identity.IsAuthenticated始终为false。 正如您所看到的,我的配置非常简单,我需要它保持这种状态。 我想在某些动态路由上启用/禁用Windows身份validation,因此使用具有[Authorize]属性的控制器不是一个选项。 我想要实现的是一个简单的应用程序,其中url“/ authenticated”将使用context.User.Identity.Name的值进行回复,并且url“/ public”将回复类似“这是一个公共页面”的内容!”。 类似于ASP.NET Core中特定路由上的NTLM身份validation,但没有[Authorize]属性和控制器。 资源非常稀缺……任何人都知道我可能会缺少什么? 谢谢!

为什么我的REST服务.NET客户端会发送没有身份validation标头的每个请求,然后使用身份validation标头重试它?

我们碰巧运行带有API的REST Web服务,要求客户端使用基本身份validation。 我们用各种语言制作了一套简洁的样本,展示了如何与我们的服务进行交互。 现在我正在检查服务的IIS日志,并发现以下模式经常发生: 请求到来,被HTTP代码401拒绝 相同的请求被重新发送并成功 看起来像第一个请求没有授权标头发送,然后第二个请求与正确的标头一起发送并成功。 大多数情况下,日志记录包含“user-agent”,这与我们在.NET示例中植入的字符串相同。 所以我认为问题仅在于.NET程序。 我们的示例代码没有重现该问题,因此我假设用户以某种方式修改了代码或从头开始编写自己的代码。 我们尝试联系用户,但显然他们不想花时间研究。 因此,很高兴找到导致.NET程序这种行为的最可能的情况。 他们为什么要这样做? 他们为什么不在第一次尝试时附上标题?

Asp.Net使用Active Directory中的安全组进行基于角色的身份validation

我正在尝试做一些简单的事情(我想) – 使用我们域中的Active Directory组使用基于角色的安全性来保护我的应用程序。 具体来说,我需要显示/隐藏页面上的项目,具体取决于当前登录的用户是否是Active Directory中domain\groupA一部分。 出于某种原因,很难找到有关使用Active Directory的信息。 我似乎发现的所有内容都详细介绍了使用角色使用基于表单的身份validation,或者它使用数据库来存储信息。 我想要做的就是在Active Directory中使用我们已经概述的安全结构。 有人可以解释我需要什么吗? 我需要: web.config web.config IIS设置为Windows身份validation if (User.IsInRole(@”domain\groupA”)){ //do stuff }在我的页面中? 我还缺少什么? 什么? 因为它不起作用。 嘿嘿。 感谢你的帮助。

如何(优雅地)确定C#winforms应用程序中是否需要代理身份validation

我的用例是这样的,我想呼叫一个web服务,如果我在需要身份validation的代理服务器后面,我想只使用默认凭据… WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 否则我只是简单地拨打电话,确定是否需要预先validationauth是非常好的,而不是在我尝试拨打电话后处理exception。 想法?

是否有可能欺骗此WindowsIdentity代码使用错误的用户?

TL; DR可以欺骗WindowsIdentity的Token属性(例如someIdentity.Token )中包含的用户令牌,以便: var validated = new WindowsIdentity(someIdentity.Token); …将返回一个声称代表用户的实例,该用户实际上已经过身份validation,但IsAuthenticated设置为true ,有效.Name和.User属性等? 下面我对此进行了一些界定; 它可能不可能完全欺骗。 全文: 在这个答案中 , Damien_The_Unbeliever巧妙地certificate了我的一些代码可能被欺骗,相信它在WindowsIdentity实例中没有有效的身份validation用户。 简而言之,我的代码假设如果Thread.CurrentPrincipal.Identity是WindowsIdentity一个实例并且IsAuthorized是true ,它代表一个经过身份validation的用户,我可以依赖.User的SID: WindowsIdentity identity = Thread.CurrentPrincipal == null ? null : Thread.CurrentPrincipal.Identity as WindowsIdentity; if (identity != null && identity.IsAuthenticated && !identity.IsAnonymous) { // …use and trust the SID in identity.User, the // username in identity.Name, etc…. } (这个代码使用线程而不是WindowsIdentity.GetCurrent()是有原因的。) […]

如何在ASP.NET中允许多种身份validation方法?

我正在构建一个新的ASP.NET MVC应用程序(在C#中),其中一个要求是创建一个新的成员数据库。 为此,我们需要角色来管理不同类型的成员和配置文件,以管理附加到每个成员的其他元数据。 到目前为止,只需使用标准的MembershipProvider,RoleProvider和ProfileProvider作为.NET Framework的一部分提供。 但是,问题是我想允许不同的身份validation方法。 我希望帐户和登录凭据具有一对多关系(一个帐户可以附加一些登录凭据)。 例如,用户可能同时将OpenID和ActiveDirectory帐户附加到其帐户。 但是,在尝试了几种方法之后,我们选择了MembershipProvider路线(解释了它是如何实现的,如下所示)。 我的问题是,人们之前是如何做到这一点的,以及人们如何建议我接近它? 它似乎是在很多网站上实现的东西,但在这里的搜索并没有返回任何可靠的东西。 编辑:在隔夜和今天早上四处寻找好几个小时之后 – 我仍然没有意识到屠杀一个会员提供者将是最简单的选择。 有多个MembershipProviders会产生相同的效果吗? BOUNTY EDIT:没有回复,我假设没有更好的解决方案,我发布的答案。 这是真的吗? 我正在提供奖励,试着看看是否有人对此有任何进一步的想法以及是否有更好的选择。 BOUNTY ACCEPT EDIT:我认为WIF是下面接受的答案,对于.NET 4版本和其他版本可能适用于3.5。 除此之外,也许一个被屠杀的MembershipProvider或改编的可能仍然是相关的。