ale*_*dru 7 asp.net-mvc oauth-2.0 asp.net-mvc-5
嗨我试图了解新的身份验证机制如何在SPA模板中的MVC5中工作,我似乎感到困惑.我的最终目标是创建一个将暴露给SPA,iOS,Android和Windows的API电话客户
这是我的理解:
我明白在启动时不知何故装饰的类:
[assembly: OwinStartup(typeof(WebApplication1.Startup))]
Run Code Online (Sandbox Code Playgroud)
神奇地调用ConfigureAuth方法:
在这个方法中,我有3行代码,在启动类构造函数中,我初始化了OAuth身份验证选项:
static Startup(){
PublicClientId = "self";
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>());
OAuthOptions = new OAuthAuthorizationServerOptions {
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
}
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseOAuthBearerTokens(OAuthOptions);
}
Run Code Online (Sandbox Code Playgroud)
ConfigureAuth中的前两行似乎将我的应用程序和外部应用程序设置为使用cookie来存储身份验证状态,而第三行似乎表明它正在为我的应用程序使用承载令牌.
从目前为止我对移动设备有限的了解,本机应用程序不了解cookie,我应该使用令牌进行身份验证.
如果是这种情况,不应该将externalSignIn设置为Bearer tokes而不是外部cookie吗?
在调试时我还注意到在OAuthProvider中,身份验证类型实际上设置为bearrer令牌.如果是这样的话,这行代码实际上是这样做的:
app.UseCookieAuthentication(new CookieAuthenticationOptions());
对于如何工作的一些澄清将非常感激我只能在网上找到信息,告诉我如何使用外部登录.
在我看来,MVC 5 SPA模板是对可能性的证明,而不仅仅是对特定最佳实践的承诺.
我发现删除该行app.UseCookieAuthentication(new CookieAuthenticationOptions());对SPA没有任何影响,因为正如SPA一样,所有需要的HTML都是匿名检索的,此后所有的身份验证都是在后续的数据请求中完成的.在这种情况下,将从WebAPI端点检索数据并使用承载令牌进行保护.
我不知道为什么这样做.还有许多其他领域,其中两个不同的问题有点混乱.例如,传统的Global.asax MVC Application_Start仍然存在,但新的OWIN启动机制也存在.没有理由Application_Start不能在OWIN Startup中处理(Filter/Route/Bundle注册等)中的所有内容.
还有其他问题.如果您打开外部身份验证(例如使用Google)然后减少AccessTokenExpireTimeSpan,则会发现当令牌过期时,您的SPA会显示"此请求已被拒绝授权".信息.换句话说,没有用于令牌刷新的机制.这并不是立即显而易见的,因为访问令牌超时设置为14天,这在考虑跨站点请求伪造攻击等时相当不安全.此外,没有强制执行传输安全机制,例如SSL.令牌本身并不安全,需要在传输中加以保护,以防止CRSF攻击和数据在途中被提取.
所以,MVC 5 SPA作为一个演示很好,我想,但我不会在生产中使用它.它显示了新的OWIN中间件可以做什么,但它无法替代基于令牌的安全性的全面知识.
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |