ASP.NET团队已经发布了新的示例,展示了如何使用身份包。它们包含在以下nuget包中:Microsoft Asp.Net身份示例
这些示例非常有帮助,但是与所提供的模板中的原始处理方式相比,存在很多变化。
我的具体问题:在原始SPA模板中,有以下代码:
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
...
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
但是在nuget包中的新示例中,该代码消失了,而该代码代替了它:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
谁能帮助我了解app.UseOAuthBearerTokens和app.UseCookieAuthentication之间的区别(以及进行此更改的原因)?它们似乎都允许应用程序以相同的方式运行,我可以对此更改进行一些说明。
谢谢...
-Ben
OAuth用于API安全性,在IN API中,您不会使用Cookie,这实际上是无状态的。但是,在说普通的MVC或表单网站时,您将使用普通的会话cookie。除非您要创建API,否则我不会担心OAuth,而只需使用基于传统cookie的身份验证即可。
如果要创建API,则需要这样做,我会说必须进行OAuth验证。然后,您将随请求一起发送令牌,发布,放置,删除。处理程序将此令牌解码为后端,以显示权限,用户ID等
认为最好对此进行扩展并解释问题,以及OAuth为什么解决它。
通常,一个api会位于UI的单独域中,例如APP,网站等。如果您确实设法从API获得cookie(例如facebook.com),则只能在Facebook。但是您的网站将是www.myblog.com。Ajax中有一些设置可以启用通过ajax请求传递cookie,但是域必须相同,这仍然很粗略。
因此Oauth诞生了,本质上是创建了最能描述为基于字符串的cookie,只要您随心所欲地将其存储在请求标头中,就可以按照您的喜好存储该cookie。
您可以在浏览器应用程序中使用javascript创建cookie,并将令牌保存在该cookie中。这将使您能够利用持久性存储。但是,最好使用可用的本地存储。因此,对于基于浏览器的应用程序,这将是LocalStorage API,对于台式机应用程序,您可以使用临时存储,本地数据库等,而电话应用程序将具有类似的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句