asp.net – 我应该如何使用Identity 2.0和WebAPI 2.1以及Owin 2
我正在使用
>同一域上的新浏览器客户端 在具有AngularJS前端的WebAPI应用程序中. 我正在阅读令牌认证,但我现在很困惑,我找不到任何使用我的组合的好例子.我想知道的是我应该使用cookie或令牌进行身份验证.我应该使用Userfactory还是CreatePerOwinContext? 这是我在Startup.Auth.cs中的内容 public partial class Startup { public void ConfigureAuth(IAppBuilder app) { app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/"),Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager,ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30),regenerateIdentity: (manager,user) => user.GenerateUserIdentityAsync(manager)) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie,TimeSpan.FromMinutes(5)); // Enables the application to remember the second login verification factor such as phone or email. // Once you check this option,your second step of verification during the login process will be remembered on the device where you logged in from. // This is similar to the RememberMe option when you log in. app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); } } 这是我的WebAPI配置: public static class WebApiConfig { public static void CustomizeConfig(HttpConfiguration config) { config.Formatters.Remove(config.Formatters.XmlFormatter); var json = config.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; json.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-ddTHH:mmZ" }); } 我看到了一些使用此代码的示例,但我不确定如何调用它: OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/Token"),Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory),AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),AllowInsecureHttp = true }; 我可以用这个替换cookie身份验证吗? 解决方法
不是专家,但在我的涉猎中我发现令牌非常适合api,从javascript到api,传统的cookie主要用于ui.根据您的尝试,其中任何一个或两个都可以工作.
您可以按照这样的链接执行api http://blog.iteedee.com/2014/03/asp-net-identity-2-0-cookie-token-authentication/的ui和令牌的cookie app.CreatePerOwinContext(ApplicationSession.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); // Token Authentication app.USEOAuthBearerAuthentication(new OAuthBearerOptions()); 我想如果你想要两者的承载,你可以将cookie认证选项认证类型设置为承载,但你必须使用它.令牌将位于“.AspNet.ExternalBearer”下的owincontext中. 我还认为如果你注册了Identity 2.0中间件,我认为它也注册了oauth中间件,所以你不需要自己注册oauthserver中间件.这是您发布的OAuthAuthorizationServerOptions代码.你不需要它. 如果ui和api分开,那么如果你想从ui传递到api做某种单点登录,那就更难了.我建议从thinktecture开始查看opensource身份服务器或授权服务器. 如果您在owin中间件和Identity 2.0上设置,则需要确保应用程序和api都可以读取令牌,您可能需要实现ISecureDataFormat.但请记住,解密并不意味着你可以100%信任一个令牌,它应该被签名和验证.取决于您的需求. 对不起,我想那是漫长的漫步……祝你好运. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- OWIN上的CORS和访问/令牌导致“Access-Control-Allow-Origi
- IIS7上的ASP.NET应用程序 – 在iisreset启动后非常慢
- asp.net – 适用于多个用户的EWS通知中心
- asp.net-mvc – 将WebForm视图引擎标记转换为Razor视图引擎
- asp.net – DNN vs Composite C1 – Pro and Cons
- asp.net-mvc – 如何在ASP.NET MVC 3应用程序中处理未捕获的
- 当通过ASP.NET成员资格检查用户角色时,SemaphoreFullExcept
- asp.net-mvc – @ Html.ValidationSummary是否适用于MVC3或
- asp.net-mvc-5 – 更改消息“密码必须至少包含一个非字母或
- 上传经典ASP中的图像和目录中找不到的图像