【发布时间】:2014-10-19 07:44:27
【问题描述】:
我研究外部登录策略,但术语让我感到困惑。以下是什么关系。
- 欧文
- OauthWebSecurity
- OAuth 2.0
- 欧文武士刀
- ASP.NET 身份
【问题讨论】:
标签: oauth asp.net-mvc-5 owin
我研究外部登录策略,但术语让我感到困惑。以下是什么关系。
【问题讨论】:
标签: oauth asp.net-mvc-5 owin
Owin 只不过是一个specification。它代表 .Net 的开放式 Web 界面。 用非常简单的术语来说,它基于这样一种想法,即使用一些语言结构(代表和字典),您可以创建一个框架来处理与托管位置无关的 Web 请求(您甚至可以从控制台应用程序)。
Owin 规范的实现称为 Katana。
OAuth 2.0 是一种授权 协议。 OAuth 背后的理念是您(资源所有者)可以将访问权限委托给第三方。一个例子是一个 Web 应用程序能够为你在你的 Facebook 墙上发帖。 同样,用非常简单的术语来说,这通过在用户访问受保护的资源时向用户发送 302 重定向来实现。该 302 将用户重定向到例如 Facebook 的 oauth 登录页面 (https://www.facebook.com/dialog/oauth?client_id=...&redirect_url=[yourwebapp]&scope=[permissionsrequiredfromuser])。 登录 facebook 后,接受权限请求,facebook 将向您提供的 redirect_url 发送一个 302 重定向,并带有 access_token,然后您可以使用它代表提供凭据的用户发送请求。例如,要获取有关用户的信息,您需要向https://graph.facebook.com/me?access_token=[access_token] 发出请求。 此工作流程有多种变化。它们都在答案末尾的链接中进行了解释。
ASP.NET 标识与 ASP.NET 无关。谈论糟糕的命名......它提供了从数据源保存和检索用户数据的功能。它还为您提供了将声明和角色与用户、其他“登录提供者”相关联的能力(当您“使用 facebook 登录”并且您来自 facebook 的 user_id 与您的本地用户 id 相关联时就是这种情况,此信息是存储在 AspNetUserLogins 表中)。
您在 MVC 项目模板中看到它的使用方式是在 Account 控制器和 CookieAuthenticationMiddleware 中。
http://odetocode.com/blogs/scott/archive/2013/07/09/getting-started-with-owin-katana-and-vs2013.aspx http://odetocode.com/blogs/scott/archive/2013/11/11/writing-owin-middleware.aspx http://odetocode.com/blogs/scott/archive/2013/11/12/simple-logging-middleware-katana-part-4.aspx http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.1 http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx http://www.asp.net/web-api/overview/security/external-authentication-services
http://brockallen.com/2013/10/20/the-good-the-bad-and-the-ugly-of-asp-net-identity/ http://curah.microsoft.com/55636/aspnet-identity http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx
【讨论】:
https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server(最新方法 - 从技术上讲,您必须实现一些方法。示例很少,作为替代方案,您可以查看它是如何在 IdentityServer4 for .net core 中实现的)
【讨论】: