c#-Asp.Net Core 2.2-了解身份验证中间件和外部登录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-Asp.Net Core 2.2-了解身份验证中间件和外部登录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2230字,纯文字阅读大概需要4分钟。
内容图文
![c#-Asp.Net Core 2.2-了解身份验证中间件和外部登录](/upload/InfoBanner/zyjiaocheng/650/39a26579948f44c291607d739a00defc.jpg)
我一直在尝试围绕这个概念下意识,但是有很多问题,不幸的是,所有正式文档和教程都是基于带有单独用户帐户的Visual Studio模板.
我相信我的目标非常简单.我有一个Web应用程序,它将仅支持外部提供程序登录(即:Facebook,Twitter和LinkedIn).我不想支持cookie身份验证,因为将不支持自定义用户名/密码.
我的第一个问题是定义默认的AuthenticationScheme.以下是我的startup.cs:
services.AddAuthentication()
.AddFacebook(/* options */)
.AddTwitter(/* options */)
如果我使用Authorize属性定义一个控制器动作,那么当我点击该路由时,不会得到默认身份验证方案定义的错误.但是,如果用户未经授权,我希望将他们重定向到我的登录路由.如果我像下面那样修改startup.cs,那么所有方法都可以,但是我认为我支持我不希望的cookie(旧形式身份验证?)身份验证.
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie()
.AddFacebook(/* options */)
我的另一个问题是我不知道在AddFacebook()调用下会发生什么.如果我以此方式设置中间件并使用Facebook登录,我会神奇地获得所有必要的令牌,声明,然后突然我设置了应用程序cookie,而我的fb_login回调路由可以访问Facebook的令牌!当我检查网络请求时,我发现signin-facebook路由被击中-这是我未定义的-而且我猜它在幕后调用HttpContext.SignInAsync()等…但是如果我刷新我的fb-登录回调并检查是否
HttpContext.AuthenticateAsync(FacebookDefaults.AuthenticationScheme)
返回Success = true否!它返回false!但这是一秒钟前的事实吗?
另外,什么时候应该使用AuthenticateAsync()和SignInAsync()之类的方法?
长话短说,我需要一个无需asp.net Identity Framework,EntityFramework和模板即可解释该中间件的教程或文档.
我想了解一个简单的AddFacebook()调用如何绑定所有内容,并且如果我想手动执行此操作(例如使用AddOauth),我如何实现相同的功能?
我不喜欢“自动工作”的代码,因此如果有人可以解释这里发生的事情,我将不胜感激.
解决方法:
Cookie身份验证用于在请求之间保留身份验证状态.没有替代品,没有,它与表单身份验证不同,尽管在两种情况下都使用cookie.这样做的原因仅仅是因为cookie是使状态通过HTTP协议工作的原因,HTTP协议本身是无状态的.如果排除使用cookie,则没有其他机制可以保持状态.
使用类似Facebook auth方案的东西直接授权初始请求,但是同样,由于没有状态,下一个请求将不再被认证,而无需再次通过Facebook OAuth流程.
总而言之,其他身份验证方案可用于API之类的东西,其中通常通过诸如Authorization标头之类的东西分别对每个请求进行身份验证. Web浏览器无法以这种方式工作,而是依靠Cookie来处理后续授权.没有Cookie,没有授权.
内容总结
以上是互联网集市为您收集整理的c#-Asp.Net Core 2.2-了解身份验证中间件和外部登录全部内容,希望文章能够帮你解决c#-Asp.Net Core 2.2-了解身份验证中间件和外部登录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。