Tag: owin

我是否应该使用OwinContext的环境来保存每个请求的特定于应用程序的数据

我需要一种方法来存储每个请求的日志对象。 使用HttpContext,我会将其添加到项目Dictionary中。 如果我能帮助它,我不想把HttpContext带进去。 下面的代码是我建议的Unity LifeTimeManager,它将在OwinContext的Environment属性中存储对象,我可以使用我的Owin中间件访问它。 public class OwinContextLifetimeManager : LifetimeManager { private string key = (new Guid()).ToString(); private IDictionary environment; public OwinContextLifetimeManager(IDictionary environment) { this.environment = environment; } public override object GetValue() { if (environment != null && environment.ContainsKey(key)) return environment[key]; else return null; } public override void RemoveValue() { if (environment != null) environment.Remove(key); […]

使用Owin的Twitter外部登录提供HTTP 403(禁止)

ASP.NET MVC 5项目。 Owin版本4.0.0.0 Startup.Auth app.UseTwitterAuthentication( consumerKey: “somekey”, consumerSecret: “someSecretKey”); ExternalLogin方法中发生exception 例外:响应状态代码不表示成功:403(禁止)。 以下是回调url 仅供参考:网站是真实的,并且工作没有问题,Twitter登录在几周前工作,但是现在,突然,开始失败,出现上一个错误。 堆栈跟踪 [HttpRequestException: Response status code does not indicate success: 403 (Forbidden).] System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() +121834 Microsoft.Owin.Security.Twitter.d__23.MoveNext() +2387 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60 Microsoft.Owin.Security.Twitter.d__12.MoveNext() +1091 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60 Microsoft.Owin.Security.Infrastructure.d__b.MoveNext() +376 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60 Microsoft.Owin.Security.Infrastructure.d__8.MoveNext() +475 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60 […]

使用Azure AD时,将用户重定向到自定义登录页面

我正在使用以下代码示例将Azure AD登录插入我的应用程序( https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet )。 我发现代码工作得很好,但是如果用户还没有登录或者他们的会话已经过期,我希望能够将用户重定向到自定义登录页面。 然而,我正在努力让这个工作,并想知道这是否确实可行? 是否按设计将用户始终重定向到Azure AD的Microsoft登录页面而不是您自己的自定义页面,或者是否有我错过的设置? 我修改了FilterConfig.cs提供的代码以启用Authorizefilter属性: filters.Add(new AuthorizeAttribute()); 我还在web.config添加了以下内容,但没有效果: 在Startup.Auth.cs文件中,我看不到app.UseOpenIdConnectAuthentication可以进行的任何更改,以允许我设置通用登录页面,因为我可能使用基于cookie的身份validation。

OWIN上的Application_PreSendRequestHeaders()

我有一个不使用OWIN中间件的应用程序,并具有以下Global.asax : public class MvcApplication : HttpApplication { protected void Application_Start() { //… } protected void Application_PreSendRequestHeaders() { Response.Headers.Remove(“Server”); } } 每次应用程序发送响应时,都会删除Server标头。 如何使用使用OWIN的应用程序执行相同操作? public class Startup { public void Configuration(IAppBuilder application) { //… } //What method do I need to create here? }

ASP.NET MVC 5.1 C#OWIN facebook身份validation或登录请求生日,喜欢,公开个人资料,电话号码

我看过很多关于facebook身份validation的post,要么是旧的,要么是不正常的。 然而,最后我在我的项目中做了一些有效但不完全的东西。 这是我要求的代码 var facebookAuthenticationOptions = new FacebookAuthenticationOptions() { AppId = “…ID”, AppSecret = “…AppSecret”, AuthenticationType = “Facebook”, SignInAsAuthenticationType = “ExternalCookie”, //Provider = new FacebookAuthenticationProvider //{ // OnAuthenticated = async ctx => // { // if (ctx.User[“birthday”] != null) // { // ctx.Identity.AddClaim(new Claim(ClaimTypes.DateOfBirth,ctx.User[“birthday”].ToString())); // } // } //} }; facebookAuthenticationOptions.Scope.Add(“user_birthday”); //facebookAuthenticationOptions.Scope.Add(“first_name”); //facebookAuthenticationOptions.Scope.Add(“last_name”); //page goes […]

在实现自己的IUserStore时,类上的“可选”接口实际上是可选的吗?

我正在使用Microsoft的Asp.Net Identity框架版本2,并且正在实现我自己的IUserStore。 我的新类MyUserStore实现了IUserStore接口和IUserPasswordStore ,这是将它与UserManager类一起使用所需的。 或者至少这是我从阅读教程中收集的内容,如下所示 : “身份系统中所需的一个接口是IUserStore” – Scott Allen 但是,当我运行代码时,情况似乎并非如此。 我初始化我的经理: var uMan= new UserManager(new MyUserStore()); var sMan = new SignInManager(uMan,authCtxFromOwin); 当执行SignInManager上的sMan.PasswordSignIn(…)时,无论如何,SignInManager始终在UserManager中运行依赖于可选接口的function。 以下是SignInManager类中PasswordSignInAsync方法的来源: public virtual async Task PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) { … if (await UserManager.IsLockedOutAsync(user.Id).WithCurrentCulture()) { return SignInStatus.LockedOut; } if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture()) { return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture(); } […]

owin oauth发送其他参数

我确信这是可能的,但不确定如何实现。 我有一个OWIN OAUTH实现,它当前接受用户的用户名和密码,并根据数据库对它们进行身份validation。 我想扩展它以通过SmartCard Uid来支持使用SmartCard进行单点登录。 我可以在OWIN登录中传递其他参数吗?如果是,如何传递? 基本前提是用户可以使用用户名/密码组合或SmartCard uid登录(如果通过SmartCard uid并且在数据库中找到,则应用程序将登录用户) 我目前正在传递username , password和grant_type ,我想将uid添加到该列表中并在我的AuthorizationServiceProvider选择它。 我可以在OAuthGrantResourceOwnerCredentialsContext上看到UserName , Password和ClientId ,但我看不到任何其他属性可以支持我想要实现的内容。 这是我目前在我的服务提供商中所拥有的 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { context.OwinContext.Response.Headers.Add(“Access-Control-Allow-Origin”, new[] { “*” }); var user = await this._userService.FindUser(context.UserName, context.Password); if (user == null) { context.SetError(“invalid_grant”, “The user name or password is incorrect.”); return; } var identity = new […]

如何用asp.net身份创建交易?

我在做注册,我要求5件事: 全名,EMAILID,密码,ContactNumber,性别 现在使用寄存器方法存储的emailid和密码,并在以下两个链接中给出: public async Task Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; using var context = new MyEntities()) { using (var transaction = context.Database.BeginTransaction()) { try { var DataModel = new UserMaster(); DataModel.Gender = model.Gender.ToString(); DataModel.Name = string.Empty; var result = await […]

ASP.NET Core RC2和.NET 4.5.1应用程序之间的共享cookie身份validation

我们有两个运行共享cookie身份validation的.NET应用程序。 一个是ASP.NET Core RC1应用程序,另一个是经典的.NET 4.5.1应用程序。 这是使用Startup.cs的Configuration方法中过时的Microsoft.Owin.Security.Cookies.Interop Configuration的: 这工作正常,但不支持RC2的方法。 我们如何才能使用RC2的共享cookie身份validation?

在使用facebook或twitter授权后,存储并检索为用户收到的令牌

嗨我正在尝试编写一个MVC5应用程序,该应用程序能够存储在使用facebook或twitter授权后为用户收到的令牌。 我想将它存储在数据库而不是cookie中,并将其用于用户未来的任何API请求和登录尝试,以便每当他们尝试使用Facebook登录时,都不会提示他们使用Facebook或Twitter进行授权。方法或尝试访问个人资料信息。 查看成员资格数据库,我可以看到有一个名为AspNetTokens的表没有被使用 – 所以有什么我错过了我可以使用它的地方吗?