Tag: authentication

ASP.net核心web api:使用Facebook / Google OAuth访问令牌进行身份validation

几天来,我正试图通过Google和Facebook获得OAuth认证,以便在我的ASP.net核心web api项目中工作。 我目前的状态是: 我有一个ASP.net核心Web Api项目,用户需要在其中进行身份validation 我有一个有角度的2 web应用程序,它应该使用我的web api(带身份validation) 我有一个Android应用程序,它应该使用我的web api(带身份validation) 我的目标是: 使用Google / Facebook作为OAuth提供商进行登录 稍后:添加自己的用户帐户(可能使用IdentityServer4) 无需重定向到特殊的登录网站(如IdentityServer4解决方案)。 只需点击应用中的facebook / google按钮,即可访问,完成! 在我的Android和角度应用程序中,我能够从谷歌/ Facebook检索访问令牌。 现在,我想使用OAuth隐式流,使用给定的访问令牌对我的web api上的用户进行身份validation(将令牌作为承载令牌放入标头中) 有我的问题:有没有任何genric方式来轻松做到这一点? 我不想使用facebook / google SDK。 我试过以下: 使用IdentityServer4 :有了这个,我可以在我的webapi上使用facebook / google登录,但是需要重定向到IdentityServer4登录页面。 有没有办法在我的应用程序中点击google / fb-Button并登录, 而无需重定向到identityServer登录页面? 使用google / facebook身份validation中间件 ( https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/ ):但他们没有validation我发送的持票人令牌(尝试了无数种方法来实现正确的validation)。 这甚至可以在web api中使用吗? 试图使用Microsoft.AspNetCore.Authentication.JwtBearer-Middleware并自己为google / facebook添加必要的选项,但也没有validation(以及无数次尝试) 在过去的几天里,我已经尝试了很多可能的解决方案,我完全陷入困境并且忘记了为实现这一目标我需要做些什么。 在这一点上,我已经阅读了几乎每个asp.net web api oauth教程/ stackoverflow条目,但无法弄清楚如何在我的情况下使用这个我想要的。 大多数教程仅适用于mvc-Websites或使用IdentityServer4重定向到其登录页面。 […]

使用webAPI承载令牌进行SignalR认证

+我使用这个解决方案使用ASP.NET Web API 2,Owin和Identity实现基于令牌的身份validation……效果非常好。 我使用了这个其他的解决方案 ,这通过将承载令牌传递给连接字符串来实现signalR集线器授权和认证,但看起来要么是承载令牌没有,要么某处出现其他错误,这就是为什么我在这里寻求帮助。 ..这些是我的代码… QueryStringBearerAuthorizeAttribute:这是负责validation的类 using ImpAuth.Entities; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using Microsoft.Owin.Security.OAuth; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using System.Web; namespace ImpAuth.Providers { using System.Security.Claims; using Microsoft.AspNet.SignalR; using Microsoft.AspNet.SignalR.Hubs; using Microsoft.AspNet.SignalR.Owin; public class QueryStringBearerAuthorizeAttribute : AuthorizeAttribute { public override bool AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request) { var token […]

.net MVC使用数据库进行简单成员身份validation

使用Code First Entity Framework和.NET MVC 4我创建了一个新的Web应用程序,并用对象填充数据库,如下所示。 public class GratifyGamingContext : DbContext { public DbSet Games { get; set; } public DbSet Genres { get; set; } public DbSet UserRepository { get; set; } } 我想使用我的UserRepository表而不是AccountModel.cs中的内置UserContext类来进行我的用户帐户访问,因为我无法使用现有的dbContext进行工作。 public class UsersContext : DbContext { public UsersContext() : base(“DefaultConnection”) { } public DbSet UserProfiles { get; set; } } […]

在WCF中,服务器没有访问客户端的公钥,客户端没有访问服务器的公钥 – 仍然是Web方法操作成功。 为什么?

我在使用消息安全性的X.509服务器证书( .pfx )[未自签名,组织提供]保护的开发服务器上有一个WCF服务。 在我的本地计算机上,客户端应用程序使用消息安全性使用客户端证书( .pfx )[非自签名]文件来使用它。 预期的操作(Web服务方法)成功地运行了所需的结果。 客户服务电话: try { ServiceClient.Service1Client obj = newServiceClient.Service1Client(); Response.Write(obj.Add(1, 1)); } catch (Exception ex) { Response.Write(ex.InnerException.Message); } 题: 根据https://blogs.msdn.microsoft.com/bradleycotier/2011/12/14/mutual-authentication-with-a-iis-hosted-wcf-data-service-installed-in-a-workgroup-environment/其中说: 为了使客户端和服务能够使用证书成功进行通信,WCF客户端应用程序必须能够访问客户端的私钥,并且IIS(接收方)必须能够访问客户端的公钥。 相反,IIS必须能够访问服务私钥,并且客户端必须能够访问服务公钥。 我没有通过MMC或文件在任何一方(客户端或服务器)导入服务器或客户端的任何公共证书.cer文件,那么操作如何成功? 因为它违背了文章中分享的逻辑。 在多客户端方案中,如果我们打算拥有单个客户端.pfx证书,我们如何将其分发给所有客户端? 您的建议很有价值,请分享一些。

C#SMTP身份validation失败,但凭据正确无误

这是我的问题:我写了以下程序来测试我是否可以发送电子邮件: class Program { static void Main(string[] args) { try { Console.WriteLine(“Mail To”); MailAddress to = new MailAddress(“myemail@gmail.com”); Console.WriteLine(“Mail From”); MailAddress from = new MailAddress(“me@businessdomain.it”); MailMessage mail = new MailMessage(from, to); Console.WriteLine(“Subject”); mail.Subject = “test”; Console.WriteLine(“Your Message”); mail.Body = “test”; SmtpClient smtp = new SmtpClient(); smtp.Host = “mail.domain.it”; smtp.Port = 25; smtp.Credentials = new NetworkCredential( […]

ASP核心通过外部(自定义)服务登录

我正在寻找如何实现身份validation和授权的正确方法。 如果我理解得很好 – 这应该通过“身份”来实现 – 它提供了我需要的这些东西。 我的问题是我不能使用数据库。 我必须使用一个服务(我们的内部DDL连接到我们的系统的WCF服务),它只能登录(我给它用户名和密码),登录后我可以获得许可列表。 我已经看过文章如何有自定义UserStore,RoleStore,UserManager和SignInManager ..但我仍然感到困惑,我不知道该怎么做。 这通过身份模型是否可行? 如果不是我应该怎么做呢? 谢谢你的建议。 我已经检查了一些文章: Microsoft – 自定义存储提供程序 没有entity framework的核心身份 西科斯基博客 – 自定义用户管理器

将.net core 2的JWT Authentication实现转移到asp.net web api 2

我在.net core 2应用程序中实现了JWT身份validation ,它工作正常。 我想在asp.net web api 2应用程序中使用此实现和结构但我收到错误 我的结构: JwtTokenBuilder类: using System; using System.Collections.Generic; using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Linq; namespace solution.Authentication { public sealed class JwtTokenBuilder { private SecurityKey securityKey = null; private string subject = “”; private string issuer = “”; private string audience = “”; private Dictionary claims = new […]

C#Flurl – 将WebRequestHandler添加到FlurlClient

我正在与Flurl合作,以获得需要基于证书的身份validation的API。 我从这篇SOpost中看到,向WebRequestHandler添加证书并指示HttpClient使用此处理程序很容易。 但是,使用Flurl对我来说并不是那么清楚。 我尝试了以下三件事。 扩展DefaultHttpFactory 我首先怀疑我需要创建自己的X509HttpFactory : DefaultHttpFactory ,它将创建处理程序并将其分配给HttpClient 。 但是,在查看源代码时,我注意到CreateClient的构造函数已经需要一个处理程序。 这个处理程序来自哪里? 使用DefaultHttpFactory创建客户端 WebRequestHandler handler = new WebRequestHandler(); handler.ClientCertificates.Add(myX509Cert); var clientFactory = new DefaultHttpClientFactory(); FlurlClient fc = clientFactory.CreateClient(url, handler); 由于HttpClient无法转换为FlurlClient因此无法编译 使用ConfigureHttpClient var clientFactory = new DefaultHttpClientFactory(); FlurlClient fc = new Url(“foobar.com”).ConfigureHttpClient(client => client = clientFactory .CreateClient(url, handler)); 这似乎是最可行的选项,但我不确定,因为委托是一个没有返回类型的Action 。 问题 使用Flurl支持客户端证书身份validation的最佳/正确方法是什么?

使用浏览器后退按钮注销问题

我使用ASP.Net MVC 4创建了登录/注销function。我使用自己创建的表单来针对Active Directory对用户进行身份validation。 它的function很好。 安全问题仍然存在很大问题。 用户单击注销链接后,他/她已成功注销并重新定向到登录表单。 控制器中的代码如下所示。 public ActionResult Logout() { // Tried to include below 3 lines in _Layout.cshtml as well. But not identifying. Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); Response.Cache.SetNoStore(); Session.Abandon(); return RedirectToAction(“Login”); } 但是,一旦点击浏览器后退按钮,用户就可以返回到其他页面并浏览页面。 我通过几种解决方案,不同的方法,但没有解决。 似乎MVC方法与ASP.NET表单有很大不同。 感谢你对此的帮助。 (我希望使用C#/ MVC方式解决这个问题。在注销时不使用JavaScript来禁用/关闭浏览器。) 更新:代码片段 [HttpPost] public ActionResult Login(LoginModel authUser) { // Call Helper to get LDAP info. Will return […]

使用客户端证书进行智能卡身份validation

我有第三方Web应用程序,现在我的经理想要将智能卡身份validation添加到某些页面(而不是整个应用程序)并返回证书信息。 我想的是向这些页面添加按钮,在onclick事件中,我将进行客户端证书身份validation(其中将出现证书选择窗口,然后是“PIN”窗口)并返回证书对象以供进一步处理。 我最初想过一个Web服务来进行客户端证书身份validation并返回证书信息,这很好,因为我们可能会考虑在其他Web应用程序(在不同平台上)使用该Web服务。 但是,我找不到任何代码示例。 然后我找到了IIS解决方案 。 我现在创建了一个单独的文件夹,其中包含一个需要客户端证书的页面。 在按钮单击事件上,我重定向到该页面。 然后在该页面上,我使用X509Certificate类检索证书信息。 我不认为这对我正在做的事情有所帮助,或者至少我不知道它有何帮助。 所以我的问题是(抱歉长篇背景说明) 如何使用认证结果从该页面重定向? 如果可能,有关如何构建以与IIS相同的方式进行客户端证书身份validation的Web服务的任何参考? 谢谢 更新我环顾四周,仍然没有关于如何实现这一点的线索。 我不确定如何在SSL / TLS握手阶段为Web服务编写代码。 我不知道如何将认证返回到我调用此function的页面。 所以我现在要做的是从需要客户端身份validation的受保护页面重定向。 Web服务器似乎缓存了身份validation结果。 这是我的第三个问题,希望有人能回答。 如何在页面会话结束时清除validation结果,以便每次访问页面时,它都会请求客户端validation(将出现证书选择窗口,然后是“PIN”窗口)?