Tag: authentication

如何使用HttpWebRequest进行摘要式身份validation?

我发现的各种文章( 1,2 )使这看起来很容易: WebRequest request = HttpWebRequest.Create(url); var credentialCache = new CredentialCache(); credentialCache.Add( new Uri(url), // request url “Digest”, // authentication type new NetworkCredential(“user”, “password”) // credentials ); request.Credentials = credentialCache; 但是,这仅适用于没有URL参数的URL。 例如,我可以下载http://example.com/test/xyz.html ,但是当我尝试下载http://example.com/test?page=xyz ,结果是400 Bad Request消息在服务器的日志中运行以下内容(运行Apache 2.2): Digest: uri mismatch – does not match request-uri 我的第一个想法是摘要规范要求从摘要哈希中删除URL参数 – 但是从传递给credentialCache.Add()的URL中删除参数并没有改变。 所以它必须是相反的方式,在.NET框架中的某个地方错误地从URL中删除参数。

如何播放需要身份validation的video流?

我有一个Windows应用程序(C#/ XAML),它与REST服务进行通信。 在某些时候,我需要播放此服务提供的video流。 如果我只是将流URI分配给MediaElement.Source属性,则它不起作用,因为需要对请求进行身份validation。 我需要自定义MediaElement控件发送的请求,以便添加cookie,凭据和一些其他自定义标头,但我找不到任何方法或属性来执行此操作。 我该怎么做? 它甚至可能吗?

ASP.NET Core 2.0 HttpSys Windows身份validation失败并带有Authorize属性(InvalidOperationException:未指定authenticationScheme)

我正在尝试将ASP.NET Core 1.1应用程序迁移到ASP.NET Core 2.0。 该应用程序非常简单,涉及以下内容: 主持HttpSys(原WebListener) 使用Windows身份validation: options.Authentication.Schemes = AuthenticationSchemes.NTLM 允许匿名身份validation: options.Authentication.AllowAnonymous = true (因为有些控制器不需要身份validation) 需要身份validation的控制器使用[Authorize]属性进行修饰。 该项目编译并启动就好了。 它还提供不需要身份validation的控制器的操作。 但是,只要我使用[Authorize]属性命中控制器,就会出现以下exception: System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. at Microsoft.AspNetCore.Authentication.AuthenticationService.d__11.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.ChallengeResult.d__14.MoveNext() — […]

如何在RESTful WCF API中实现HMAC身份validation

我们正在使用WCF构建RESTful API(目前.Net 3.5,但很快将转向.Net 4)。 我们有一个function框架,但它目前没有安全保障。 它需要可以从.Net应用程序以及iOS,Android和Web应用程序访问。 我们想使用此处和此处描述的HMAC身份validation方案,但在描述如何validation哈希时,这两个示例似乎都分崩离析。 第一个示例无法描述UserKeys对象(哈希表?),第二个示例缺少客户端和服务器端的GetUserKey方法。 任何人都可以解释如何在这些示例中生成/存储/检索/使用“用户密钥”/令牌,或者提供如何在RESTful WCF服务中使用HMAC授权的更好示例(如果可能的话,还有源代码)? 编辑:经过更多的研究,我们确定我们需要更多的“ 授权 ”技术而不是“ 身份validation ”技术(语义?)。 我们实施了基本授权并保护了SSL背后的API。 基本授权使用与Web请求相同的“授权”标头作为HMAC 身份validation方案,但传递用Base64编码的用户名:密码字符串而不是令牌。 这允许我们针对我们的数据库自定义validation用户,以确定用户是否获得许可并具有访问所需API方法的适当安全权限。 我们当然愿意听取有关如何完成自定义用户名/密码validation的其他选项以及其他保护API的方法。

.NET模拟.NETFramework 2 VS .NETFrameWork 4中的ASP.NET模拟

我们在.NetFramework 2中有一个ASP.NET站点(在IIS 7.5中使用App Pool 2 Classic),我们使用Basic Authenticate和Form Authenticate混合身份Form Authenticate 。 IIS中的配置是: 并且匿名身份validation中的特定用户名为: Guest 。 当用户使用Admin等其他用户名登录时,我们使用模拟: string Token = GetSpecificTokenOfCurrentUser(); System.Security.Principal.WindowsIdentity WinUser = (WindowsIdentity) HttpContext.Current.Application[“User_”+Token]; WinUser.Impersonate(); 所以每一件事都是完美的,直到我们将网站升级到.NetFramework 4并在.NET 4中添加很多function到网站,我们认为我们有一个新的问题。 问题是用户使用Admin登录并同时打开一些页面(3-4),就像在新标签中快速打开一样,用户在某些情况下不会被模拟。 就像第一个页面正确模拟Admin但另一个页面没有模仿,仍然有Guest用户。 这太奇怪了,我们在身份validation部分没有任何变化。 更改是我们升级到.NetFrameWork 4和App Pool是.NetFrameWork 4 – Classic。 我们在.Net 2版网站上进行了测试。 一切都很好,但我们将App Pool更改为.NetFrameWork 4并显示问题。 那么问题是.NetFramework 4 App Pool对Impersonate发生了什么变化? 我们错过了什么? 有什么建议吗?

WebApi.Owin中的SuppressDefaultHostAuthentication还禁止webapi之外的身份validation

我遇到了一个解决方案的问题,我使用Visual Studio SPA模板中的部件在WebApi中使用Oauth身份validation使用Account Controller。 app.UseOAuthBearerTokens(OAuthOptions); 然后我在owin webapi注册中正在做 config.SuppressDefaultHostAuthentication(); 但这也会阻止webapi环境之外的默认cookie身份validation。 这是意图吗? 如果是这样,我如何设置WebApi来抑制cookie身份validation,但它仍然在其他请求的环境中活动?

UserPrincipal.FindByIdentity中的.NET 4.5错误(System.DirectoryServices.AccountManagement)

在.NET 4.5下测试我们的.NET 4.0应用程序时,我们遇到了FindByIdentity方法的UserPrincipal 。 以下代码在.NET 4.0运行时运行时有效,但在.NET 4.5下失败: [Test] public void TestIsAccountLockedOut() { const string activeDirectoryServer = “MyActiveDirectoryServer”; const string activeDirectoryLogin = “MyADAccount@MyDomain”; const string activeDirectoryPassword = “MyADAccountPassword”; const string userAccountToTest = “TestUser@MyDomain”; const string userPasswordToTest = “WRONGPASSWORD”; var principalContext = new PrincipalContext(ContextType.Domain, activeDirectoryServer, activeDirectoryLogin, activeDirectoryPassword); var isAccountLockedOut = false; var isAuthenticated = principalContext.ValidateCredentials(userAccountToTest, userPasswordToTest, principalContext.Options); […]

Cookie身份validation在ASP.NET Core中过早到期

我有一个ASP.NET Core 1.1.2项目,我在其中使用cookie身份validation。 我遇到的问题是,用户在闲置一小时或更短时间后被提示重新登录,并且失去工作。 下面的代码就是我在Startup.cs的Configure函数中使用的设置,我可以告诉它,它应该在至少8小时后到期。 顺便说一句,ProjectProcessFlow只是项目的名称。 app.UseCookieAuthentication(new CookieAuthenticationOptions() { AuthenticationScheme = “ProjectProcessFlow”, LoginPath = new PathString(“/Account/Login/”), ExpireTimeSpan = new TimeSpan(8, 0, 0), SlidingExpiration = true, AutomaticAuthenticate = true, AutomaticChallenge = true }); 我在NuGet中包含了Microsoft.AspNetCore.Authentication.Cookies v1.1.2。 我需要做什么才能在预期的时间内完成登录过期? 附加信息: 我发现当超时发生并且要求用户再次登录时,服务器上的事件查看器中记录了一条警告,指出它找不到项目下的logs文件夹。 所以我创建了该文件夹,并等待超时再次发生。 发生这种情况时,在该文件夹中创建了一个包含以下内容的日志文件: Hosting environment: Production Content root path: C:\inetpub\wwwroot\Sprout Now listening on: http://localhost:13423 Application started. Press Ctrl+C to […]

C#中使用C#进行用户身份validation

我想在c#中执行以下cURL请求: curl -u admin:geoserver -v -XPOST -H ‘Content-type: text/xml’ \ -d ‘acme’ \ http://localhost:8080/geoserver/rest/workspaces 我尝试过使用WebRequest: string url = “http://localhost:8080/geoserver/rest/workspaces”; WebRequest request = WebRequest.Create(url); request.ContentType = “Content-type: text/xml”; request.Method = “POST”; request.Credentials = new NetworkCredential(“admin”, “geoserver”); byte[] buffer = Encoding.GetEncoding(“UTF-8”).GetBytes(“my_workspace”); Stream reqstr = request.GetRequestStream(); reqstr.Write(buffer, 0, buffer.Length); reqstr.Close(); WebResponse response = request.GetResponse(); … 但是我收到一个错误:(400)请求不好。 如果我更改请求凭据并在标头中添加身份validation: string […]

阻止显示Windows安全窗口

我有一些路由器配置页面URL,我必须加载它们,设置并保存它。 我正在使用webbrowser控件和.Net 4.5和C#语言。 但每次加载页面时,都会弹出Windows安全性并要求输入用户名和密码。 它适用于每个URL。 我怎么能阻止这个? 所有URL的用户名和密码都相同。 如何使用硬编码为所有这些设置用户名和密码?!