Tag: owin

如何在asp.net mvc身份上设置自定义身份validation?

我需要的?! 我有一个ASP.NET身份系统设置和外部登录运行。 无论出于何种原因,我需要在ASP.NET身份validation后设置自定义身份validation。 我来解释一下怎么样? 假设我有三个页面供用户查看我的应用程序,页面A,B,C。 谁可以查看Page A? 任何匿名用户都可以查看页面A. 谁可以查看页面A和B? 任何使用他/她的电子邮件和密码或外部登录创建帐户的用户。 谁可以查看Page A,B&C? 这是我想要设置自定义身份validation的地方。 任何使用他/她的电子邮件帐户或外部登录名创建帐户并且具有有效序列密钥的用户。 序列号? 我在ASP.NET身份中设置了一个类,如下所示: public class UserDetails : IdentityUser { public virtual MembershipSerial MembershipSerial { get; set; } } public class MembershipSerial { [HiddenInput(DisplayValue=false)] public int Id { get; set; } [HiddenInput(DisplayValue=false)] public string Serial { get; set; } [Required] [Display(Name=”Membership Serial”)] public […]

为什么auth中间件声明的顺序在Owin Startup类中很重要?

我读了一些关于在使用web api时在owin管道中设置身份validation的示例( 1,2,3,4) ,并且示例将身份validation中间件声明为Configuration方法中的第一个中间件,但没有告诉它为什么需要第一。 在这个问题中,作者在认证中间件之前附加了webapi中间件,然后认证无法正常工作。 当auther将它移动到方法的顶部时,一切都按预期工作。 有谁知道为什么需要将身份validation中间件添加为启动配置方法中的第一个中间件?

MVC 5重定向到登录页面不使用OWIN

我正试着用OWIN来解决问题。 我创建了两个MVC 5项目。 一个使用Aspnet.Identity进行身份validation,另一个使用另一个空项目。 我在emptyp项目中添加了以下内容: 具有登录操作和相应视图的帐户控制器 Startup.cs和另一个部分Startup.cs public partial class Startup { public void ConfigureAuth(IAppBuilder app) { app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = “ApplicationCookie”, LoginPath = new PathString(“/Account/Login”) }); } } 我在Home控制器中使用两个项目中的[Authorize]属性修饰了About操作。 当我运行第一个项目并在登录前进入“关于”屏幕时,它会按预期重定向到登录操作。 当我为第二个项目做同样的事情时,我得到一个“HTTP错误401.0 – 未经授权”而不是重定向。 知道是什么会导致第二个这样做吗?

如何从ASP.Net OpenID连接OWIN组件设置声明?

我对使用新的ASP.Net OpenID Connect框架有疑问,同时在身份validation管道中添加新的声明,如下面的代码所示。 我不确定幕后会发生多少’魔术’。 我认为我的大部分问题都集中在不了解OWIN认证中间件而不是OpenID Connect上。 Q1。 我应该从OwinContext.Authentication.User手动设置HttpContext.Current.User和Thread.CurrentPrincipal吗? Q2。 我希望能够像以前一样使用System.IdentityModel.Claims.Claim向对象添加对象类型。 新的System.Security.Claims.Claim类只接受字符串值? Q3。 我是否需要在System.Security.Claims.CurrentPrincipal为我的ClaimsPrincipal使用新的SessionSecurityToken包装器来序列化为cookie – 我正在使用app.UseCookieAuthentication(new CookieAuthenticationOptions()); 但是现在确定在维护我在SecurityTokenValidated事件期间添加的任何其他声明方面究竟做了什么? public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, PostLogoutRedirectUri = postLogoutRedirectUri, Notifications = new OpenIdConnectAuthenticationNotifications() { SecurityTokenValidated = (context) => { // retriever caller data from the incoming […]

使用OWIN的Websockets

到目前为止我在网络api上使用Microsoft WebSockets的所有示例都使用IIS,实现是在get方法上将HTTP连接升级为websocket,并将websocket处理程序的实例传递给HTTPContext public HttpResponseMessage Get() { if (HttpContext.Current.IsWebSocketRequest) { var noteHandler = new NoteSocketHandler(); HttpContext.Current.AcceptWebSocketRequest(noteHandler); } return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols); } 我想要实现的是在OWIN管道上做同样的事情。 我面临的问题是连接正在升级以使用Websockets,但它没有使用我的websocket处理程序。 我哪里错了? 请建议。 使用OwinContext的控制器(遵循Nancy使用OWIN的示例WebSockets ), public HttpResponseMessage Get() { IOwinContext owinContext = Request.GetOwinContext(); WebSocketAccept acceptToken = owinContext.Get(“websocket.Accept”); if (acceptToken != null) { var requestHeaders = GetValue<IDictionary>(owinContext.Environment, “owin.RequestHeaders”); Dictionary acceptOptions = null; string[] subProtocols; if […]

C#Owin登录在生产系统上生成identity = null

我有一个asp.net MVC 5 web项目,它在我的开发系统上运行良好。 但出于某种原因,在我的生产系统上部署解决方案后,使用Microsoft Owin和Facebook的登录就会停止工作。 回调总是检索…. error = access_denied作为参数,我追溯到owin为我的身份返回null的事实。 有什么线索在这里发生什么? UPDATE 我在我的Owin代码中实现了log4net,并且能够深入了解: Response status code does not indicate success: 400 (Bad Request). Stack trace: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at Microsoft.Owin.Security.Facebook.FacebookAuthenticationHandlerd__0.MoveNext() 请注意,我已经修改了facebook应用以匹配制作url,回复等。 private void ConfigureAuth(IAppBuilder app) { var cookieOptions = new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString(“/Account/Login”) }; app.UseCookieAuthentication(cookieOptions); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Passive app.SetDefaultSignInAsAuthenticationType(cookieOptions.AuthenticationType); app.UseFacebookAuthentication(new […]

如何在MVC 5中设置自定义ClaimsPrincipal?

我创建了一个自定义主体类 public class FacebookPrincipal : ClaimsPrincipal { public JObject Data { get; set; } } 我想用它。 当用户登录时,我尝试设置 var fbP = new FacebookPrincipal { Data = user.Data }; Thread.CurrentPrincipal = fbP; AuthenticationManager.User = fbP; HttpContext.User = fbP; 它在我设置之后就可以正常工作,但是当我home/index该值就会丢失 var user = HttpContext.GetOwinContext().Authentication.User; var bbbb = this.User; var cccc = ClaimsPrincipal.Current; 所有上述方法都返回一个类型为ClaimsPrincipal的Principal,并且转换为FacebookPrincipal返回null。 如何设置自定义主体?

AspNet.Security.OpenIdConnect.Server。 刷新令牌

据我所知,ASOS支持开箱即用的刷新令牌。 要获取刷新令牌,我需要将offline_access范围添加到我的令牌请求中。 但他们在哪里储存? 如何更改令牌的到期日期或将其删除? 如何确定创建哪个用户刷新令牌?

OWIN可以替换ASP.NET MVC应用程序中的DI吗?

大约一年前,在Visual Studio中创建时自动生成的MVC项目不包含任何关于OWIN的内容。 作为再次申请的人,试图理解变化,我想知道OWIN是否可以取代我的DI。 据我所知,Startup.Auth.cs中的以下内容集中了用户管理器的创建(处理身份),以及为应用程序创建数据库连接。 public partial class Startup { // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { // Configure the db context and user manager to use a single instance per request app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext(ApplicationUserManager.Create); // Other things… } } 从一个非常有用的来源: http : //blogs.msdn.com/b/webdev/archive/2014/02/12/per-request-lifetime-management-for-usermanager-class-in-asp-net-identity。 aspx ,似乎我们可以随时使用以下代码访问用户管理器或dbcontext public class AccountController […]

MVC与Owin JWT身份

我试图找出如何从我的令牌中获得索赔。 我会尽量保持解释简短 我有一个HTML页面,它发布到我的web api的post,并进行auth检查并返回一个JWT令牌 当我得到令牌后,我想将它发送到不同的url,我这样做的方式是使用查询字符串。 我知道我可以使用cookies但是对于这个应用我们不想使用它们。 所以,如果我的url看起来像这样http://somedomain/checkout/?token=bearer token comes here 我正在使用Owin middleware ,这是我到目前为止所拥有的 app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions { Provider = new ApplicationOAuthBearerAuthenticationProvider(), }); public class ApplicationOAuthBearerAuthenticationProvider : OAuthBearerAuthenticationProvider { public override Task RequestToken(OAuthRequestTokenContext context) { if (context == null) throw new ArgumentNullException(“context”); var token = HttpContext.Current.Request.QueryString[“token”]; if (!string.IsNullOrEmpty(token)) context.Token = token; return Task.FromResult(null); } } 但是我如何从Token获取Claims或只是检查IsAuthenticated 我在我的controller内部尝试了以下检查,但IsAuthenticated总是false […]