Tag: 认证

网络使用HttpWebRequest进行身份validation和网站身份validation

我正在尝试创建一个使用.NET Framework消费RSS数据的应用程序。 RSS站点需要用户名和密码才能开始。 并且我在我的工作场所运行此应用程序,这需要NTLM身份validation才能连接到Internet。 以下是我尝试使用的代码 NetworkCredential nc = new NetworkCredential(“SITEUSERNAME”, “SITEPASSWORD”); CredentialCache cache = new CredentialCache(); cache.Add(new Uri(RSSFeed), “Basic”, nc); cache.Add(new Uri(RSSFeed), “Ntlm”, new NetworkCredential(“USERNAME”,”PASSWORD”,”DOAMIN”)); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(RSSFeed); myHttpWebRequest.Proxy.Credentials = cache; HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 我得到407错误,如果我只是使用CredentialCache.DefaultNetworkCredentials我得到401错误。

如何确保.Net应用程序是真的?

在客户端 – 服务器应用程序中,服务器如何知道请求来自真正的应用程序而不是来自它的篡改副本? 我还没有开发客户端和服务器应用程序。 解决方案可能是普通套接字,wcf,IIS托管或其他。

要求对OWIN应用程序的所有请求进行身份validation

我正在使用自托管的OWIN应用程序,并试图找出如何要求所有请求(或任意请求)的身份validation/授权。 管道中的一些单独组件有自己的授权工具(例如WebAPI,SignalR,Nancy),但是当我想限制所有内容时,这似乎有点多余。 此外,某些中间件没有授权支持(例如Microsoft.Owin.StaticFiles)。 如果我的OWIN Startup看起来像这样: public class Startup { public void Configuration(IAppBuilder app) { app.RequireSsl(); app.UseCookieAuthentication(new CookieAuthenticationOptions()); //… app.UseGoogleAuthentication(); // ** Need to add something that restricts access ** app.UseDirectoryBrowser(); } } 在提供目录浏览器之前,如何要求用户进行身份validation(必要时重定向)? (目录浏览器可以任意为其他OWIN组件。)

如何使用HttpWebRequest.Credentials属性进行基本身份validation?

如何使用Webrequest Credentials属性发送基本身份validation标头? 即使PreAuthenticate设置为true,为什么Authorization标头不会随请求一起发送? WebRequest request = (HttpWebRequest)WebRequest.Create(“https://api.github.com/user”); request.Credentials = new NetworkCredential(“githubUsername”, “githubPassword”); request.PreAuthenticate = true; var response = request.GetResponse();

如何通过AADvalidationAzure服务管理请求

我尝试了3种没有结果的方法: 根据这篇文章https://msdn.microsoft.com/en-us/library/azure/ee460782.aspx我在AAD注册了新的Web应用程序,具有访问Azure Service Management API的权限(步骤1-9)并编写建议的两行代码来获取令牌: var context = new AuthenticationContext($”https://login.windows.net/{tenantId}”); var result = context.AcquireToken(“https://management.core.windows.net/”, clientId, new Uri(redirectUri)); ,但它失败,但例外: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException was unhandled Message: An unhandled exception of type ‘Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException’ occurred in Microsoft.IdentityModel.Clients.ActiveDirectory.dll Additional information: AADSTS90014: The request body must contain the following parameter: ‘client_secret or client_assertion’. Trace ID: aa2d6962-5aea-4f8e-bed4-9e83c7631887 Correlation ID: f7f1a61e-1720-4243-96fa-cff182150931 我也尝试过: var context = […]

如何将Windows身份validation凭据从客户端传递到Web API服务

在我的企业环境中,我有IIS7.5托管Web API服务和一个单独的网站,通过RestSharp库调用该服务。 两者目前都配置了Windows身份validation。 如果我使用浏览器导航到任何一个,我被提示输入我的Windows凭证,一切都很好……我得到了我想要的网页,REST服务吐出了我的数据。 我正在努力弄清楚的部分是如何使用单个凭证进行身份validation。 我无法弄清楚如何将网站的凭证传递给服务(我尝试模仿,但它不起作用),或手动提示用户输入用户名/密码,然后用“Windows”validation它们。 帮助一个菜鸟?

ASP.NET 5中的Web API身份validation

我一直在研究ASP.NET 5已经有一段时间了,还有一些我很困惑的事情。 要在Web API 2中实现身份validation,我过去基本上使用的是OWIN OAuth身份validation服务器中间件。 它使用起来很简单,我可以配置我需要的东西,而且我不需要在应用程序上放置一堆东西而不需要它。 现在,起初我没有在ASP.NET 5中找到它,我认为等待中间件出现是一个时间问题。 但昨天,在阅读有关安全回购的问题时,我发现显然无意将此中间件移植到新版本的框架中。 相反,似乎鼓励人们使用Identity Server 3.我看了一下项目,虽然它很好并且有很多用法我真的更喜欢配置我有时需要的最小值。 另外,另一个缺点是Identity Server 3需要完整的CLR,所以如果我需要使用它来为我的应用程序提供身份validation,我需要停止使用Core CLR,这对我来说是一个巨大的劣势,因为Core CLR是一个更轻巧。 因此,如果我不想在ASP.NET 5上使用Identity Server 3,如果OAuth Authentication Server中间件消失,如何为Web API实现身份validation? 有没有人通过这个并找到了处理它的方法? 如何在不使用Identity Server 3的情况下处理ASP.NET 5 Web API上的身份validation?

HttpClient和Windows Auth:将用户的消费者登录到服务

我正在努力理解并建立一个服务和消费者,服务将在用户登录消费者时运行。 我的消费者是一个MVC应用程序。 我的服务是一个Web Api应用程序。 两者都在同一域内的不同服务器上运行。 两者都设置为使用Windows身份validation。 我的消费者代码是: private T GenericGet(string p) { T result = default(T); HttpClientHandler handler = new HttpClientHandler() { PreAuthenticate = true, UseDefaultCredentials = true }; using (HttpClient client = new HttpClient(handler)) { client.BaseAddress = new Uri(serviceEndPoint); HttpResponseMessage response = client.GetAsync(p).Result; if (response.IsSuccessStatusCode) result = response.Content.ReadAsAsync().Result; } return result; } 在我的服务中,我调用User.Identity.Name来获取调用者ID,但这总是作为消费者应用程序池ID返回,而不是登录用户。 消费者应用程序池作为网络服务运行,服务器本身受信任以进行委派。 […]

这个基本控制器ASP.NET MVC 3中的自定义主体是非常低效的吗?

尽管我已经在这里待了一段时间,但这是我第一个关于SO的问题,所以请温柔地对待我。 我正在使用ASP.NET MVC 3 ,我想创建一个自定义Principal这样我就可以存储有关当前用户的更多信息而不是标准,因此不必经常访问数据库。 这是我追求的相当标准的东西。 我们先说一下电子邮件地址和用户ID。 我决定将对象存储在缓存中,因为我知道不建议将它存储在会话中。 我也不想继续强制转换User对象,所以我想覆盖控制器中的User对象。 所以我可以去User.UserId并保证一些东西。 所以我创建了一个这样的自定义主体: public class MyPrincipal : IPrincipal { public MyPrincipal(IIdentity ident, List roles, string email, Guid userId) { this._identity = ident; this._roles = roles; this._email = email; this._userId = userId; } IIdentity _identity; public IIdentity Identity { get { return _identity; } } private List _roles; […]

如何限制对WCF中某些方法的访问?

我开始使用简单的WCF服务有点失落。 我有两种方法,我希望向世界公开一个,第二个我想限制某些用户。 最终,我希望能够使用客户端应用程序来使用受限制的方法。 到目前为止,我可以匿名访问这两种方法: C#代码 namespace serviceSpace { [ServiceContract] interface ILocationService { [OperationContract] string GetLocation(string id); [OperationContract] string GetHiddenLocation(string id); } [AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class LocationService : ILocationService { [WebGet(UriTemplate = “Location/{id}”)] public string GetLocation(string id) { return “O hai, I’m available to everyone.”; } // only use this if authorized somehow [WebGet(UriTemplate […]