gpt4 book ai didi

asp.net-mvc - 了解 ASP.NET MVC5 新的身份验证机制

转载 作者:行者123 更新时间:2023-12-04 12:08:27 24 4
gpt4 key购买 nike

嗨,我正在尝试了解新的身份验证机制如何在 SPA 模板中的 MVC5 中工作,但我似乎感到困惑。我的最终目标是创建一个将暴露给 SPA、iOS、Android 和 Windows 的 API电话客户

这是我的理解:

我知道在启动时以某种方式装饰的类:

[assembly: OwinStartup(typeof(WebApplication1.Startup))]

正在神奇地调用 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);
}

ConfigureAuth 中的前两行似乎将我的应用程序和外部应用程序设置为使用 cookie 来存储身份验证状态,而第三行似乎表明它正在为我的应用程序使用不记名 token 。

到目前为止,我对移动设备 native 应用程序的了解有限,无法理解 cookie,我应该使用 token 进行身份验证。

如果是这种情况,不应将 externalSignIn 设置为 Bearer token 而不是外部 cookie?

在调试时,我还注意到在 OAuthProvider 中,身份验证类型实际上设置为不记名 token 。如果是这种情况,这行代码实际上是做什么的:

app.UseCookieAuthentication(new CookieAuthenticationOptions());

对此如何工作的一些澄清将不胜感激我只能在网上找到信息,告诉我如何使用外部登录。

最佳答案

在我看来,MVC 5 SPA 模板展示的不仅仅是对特定最佳实践的 promise 。

我发现删除行 app.UseCookieAuthentication(new CookieAuthenticationOptions());对 SPA 根本没有影响,因为与 SPA 一样,所有需要的 HTML 都是匿名检索的,此后所有身份验证都在任何后续数据请求上完成。在这种情况下,数据将从 WebAPI 端点检索并使用不记名 token 进行保护。

我不知道为什么会这样。还有许多其他领域,其中两个不同的关注点有点困惑。例如传统的 Global.asax MVC Application_Start仍然存在,但也存在较新的 OWIN 启动机制。 Application_Start中的一切都没有理由(过滤器/路由/捆绑注册等)无法在 OWIN 启动中处理。

还有其他问题。如果您打开外部身份验证(例如使用 Google)然后减少 AccessTokenExpireTimeSpan ,您会发现当 token 过期时,您的 SPA 会显示“此请求的授权已被拒绝”。信息。换句话说,没有适当的 token 刷新机制。这不是立即可见的,因为访问 token 超时设置为 14 天,这在考虑跨站点请求伪造攻击等时相当不安全。此外,没有强制执行传输安全机制,例如 SSL。代币是 不是 本质上是安全的,需要在传输过程中得到保护,以防止 CRSF 攻击和数据在途中被提取。

因此,我认为 MVC 5 SPA 作为演示很好,但我不会在生产中使用它。它展示了新的 OWIN 中间件可以做什么,但它不能替代基于 token 的安全性的全面知识。

关于asp.net-mvc - 了解 ASP.NET MVC5 新的身份验证机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21956773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com