【问题标题】:ASP.net 5 MVC app, with Web Api app - how to implement oAuthASP.net 5 MVC 应用程序,带有 Web Api 应用程序 - 如何实现 oAuth
【发布时间】:2016-01-19 23:23:25
【问题描述】:

我的问题基于 ASP.net 5 和身份验证。特别是,我正在尝试将 oAuth (2.0) 作为我的登录方法集成到我的解决方案中(如果这是他们注册的方式,用户可以使用 oAuth 登录,或者直接使用我自己的应用程序登录)。使用 ASP.net 5 Web 应用程序的模板,我已经成功实现了上述目标,但这并不是我所需要的。

我的前端 UI 有一个 ASP.net 5 MVC (app1),我的 REST 服务有一个 ASP.net 5 Web api 应用程序 (app2),向 UI 提供数据。这种方法没什么新意。

我希望我的 MVC 前端 (app1) 没有实体框架引用,也没有对登录管理器之类的东西的引用(如果可能的话)。只是让它尽可能简单。我有一个登录屏幕,我想提供通过 facebook 或 google oAuth 帐户登录的选项。当您启动一个新的 ASP.net 5 Web 应用程序时,我不想使用 MS 开箱即用的漂亮代码(嘿,为什么要让生活变得简单!),我想使用我的 Web api 来完成与它一样多的工作可以(我意识到需要在 app1 中发生一些事情才能完成这项工作)。

我的目标是让我的 UI 尽可能简单,并将复杂的功能(业务逻辑、数据库访问和其他东西,如缓存)卸载到 web api 应用程序。

我在提取围绕 oAuth 的 web 应用演示部分并将其移动到 web api 以从 app1 使用时遇到困难。有没有人设法做到这一点?这是一个坏主意吗?有没有人在新的 ASP.net 5 MVC 中有这种方法的示例。

提前感谢您的建议!

【问题讨论】:

  • 滚动自己的身份验证只有一个好处,那就是了解编写一个体面的身份验证框架最好留给一个团队其他开发商的。把它做好可能会令人费解。你真的想成为下一个阿什莉麦迪逊吗?
  • 希望我的同事都没有离开数据库(根据你的例子)。我以前以非常安全的方式推出了自己的身份验证,如果我真的必须这样做,我并不反对编写自己的身份验证。但是,如果可能的话,我想实现任何现有的框架(这绝对比编写我们自己的框架更可取),但只是通过 web api 方式,而不是在一个 ASP.net 5 MVC 应用程序中存在的所有框架(根据模板)。我有一个分层架构,并且希望尽可能多地在 web api 中处理身份验证。

标签: c# asp.net asp.net-web-api oauth-2.0 asp.net-core-mvc


【解决方案1】:

我们(即 ASP.NET)建议您查看 Identity Server。 v4 现在构建在 .NET 核心之上。您在 facebook、twitter 等模板中看到的 OAuth 组件不适合针对 WebAPI 使用,它们用于基于浏览器的交互式登录,而不是用于 javascript。

您将让交互式应用正常处理注册,然后使用 Identity Server 发出不记名令牌,将其指向您的身份数据库,并在您的 WebAPI 中对其进行验证。

我们不建议您自己滚动。

【讨论】:

    【解决方案2】:

    您可以使用ASP.NET Identity 构建带有会员管理器的 WebAPI 应用程序。 ASP.NET 成员资格现在称为 ASP.NET 身份。

    从该链接中,您将了解如何创建一个支持所有基本 ASP.NET 成员功能(登录、注册等)的 WebAPI 应用程序。

    一旦您使用(自定义)ASP.NET 成员存储设置了 WebAPI(运行应用程序后会自动生成数据库。),您就可以使用具有数据访问权限的 RESTful Web 层进行设置。您还可以自定义存储提供程序。见这里:Overview of Custom Storage Providers for ASP.NET Identity

    ASP.NET 网站 (www.asp.net) 包含所有必要的信息,足以从头开始创建您所说的所有内容。对于与 Facebook 或其他人的集成,您可以查看此链接:External Authentication Services with ASP.NET Web API (C#)

    【讨论】:

    • 感谢@joordan831 的信息,ASP.Net Identification 是否也适用于 ASP.net 5? (我注意到这篇文章是在 2013 年创建的)
    • 是的,它确实适用于 ASP.NET MVC 5。我在 VS 2015 中使用它。
    • Asp.net 身份在 Visual Studio Web 项目的默认模板中用于身份验证的机制。
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 2010-09-21
    • 2015-04-07
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多