gpt4 book ai didi

c# - 使用 Restful asp.net Web api 和安全 API 进行用户登录身份验证

转载 作者:太空狗 更新时间:2023-10-29 17:30:27 25 4
gpt4 key购买 nike

我正在学习使用 AngularJS 前端框架开发 asp.net Web API。大约一个星期以来,我一直在对此进行大量研究。我已经阅读了有关 oauth 2、owin 和其他内容的信息。但现在很困惑哪个更好。

我有几个问题,希望你们能帮助我。

1) 在我的应用程序中 - 只有注册用户才能通过使用电子邮件和密码登录来访问应用程序。有人可以给我指出一个好的资源或文章,介绍如何使用 API 创建良好的注册和登录身份验证。这足够安全,因为我将收集用户数据并存储它们。

2) 我需要什么类型的安全性来保护我的 API,起初 API 会在防火墙后面,然后一个项目完成后它将向世界开放?如果可能的话,请指出正确的方向。

请注意,这不是一个重复的问题,我已经浏览了 stackoverflow 上的大部分帖子,并在找不到答案后提出这个问题。

对此有任何建议或帮助,我们将不胜感激。

感谢您为此主题所做的所有努力

最佳答案

您可以使用 Asp.Net Web API 2、OWIN、Asp.Net Identity 和 AngularJS 使用基于 token 的身份验证。

Asp.Net Web API 现在完全支持 OWIN。 Katana 是微软的 OWIN 实现。

Asp.Net Web API 现在支持使用 OAuth 2.0 进行授权。 Microsoft OWIN 组件使 OAuth 成为可能。

您是否对 Identity、OWIN、OAuth 这些术语感到困惑...这里是对它们的简要概述。

Asp.Net Identity 是为了克服asp.net 成员(member)系统的问题而开发的。 Asp.Net Identity 允许我们使用不同的存储(表存储,无 SQL),并允许我们使用外部身份提供者,因为它使用 OWIN。

OWIN 旨在打破 Asp.Net 和 IIS 之间的紧密耦合。 OWIN 只是一个规范。 Katana 是 Microsoft 的 OWIN 实现。 OWIN 位于 http 请求管道中。 OWIN 管道有中间件组件,我们可以在其中提及外部登录机制。

OAuth 的创建是为了消除用户与第三方应用程序共享密码的需要。

注意:这里 Asp.Net Identity 与 OWIN、OAuth 无关,反之亦然。它们是三个独立的概念。 Asp.Net Identity 是微软的实现。 OWIN、OAuth 是开放的标准概念。因为 Microsoft 已经实现了 OWIN,所以 OAuth 成为可能。

因此,Web API 2 使用 OAuth 不记名 token 而不是表单例份验证 cookie,这在 Web API 世界中更为正确。因为它允许使用各种终端用户设备,例如移动设备。

对于您的情况,您可以使用 visual studio 2013 中提供的默认模板。
1. 新建工程,选择Asp.Net web application。
2. 选择Web API 或SPA 模板。
3. 更改身份验证并选择个人用户帐户。
4. 单击确定。

现在,一切都已默认配置,以便使用 OWIN、Asp.Net Identity、OAuth。由于我们使用基于 token 的身份验证,您会发现帐户 Controller 中没有可用的登录方法。

  1. 要注册用户,请使用 AccountController 中可用的 Register 方法
  2. 要登录,您需要按以下格式发布数据到 http://example.com/token (可以在StartUp.Auth.cs中配置)
    grant_type=password&username=Alice&password=password123
  3. 登录后,我们会收到不记名 token ,我们需要在每次请求访问 protected 资源时将其与授权 header 一起发送。

当您使用很棒的前端框架 AngularJs 时,您可以将不记名 token 保存在本地存储中,并且您可以编写一个 http 拦截器服务,它负责为每个请求发送不记名 token 。

此处用户注册由 Asp.Net 身份负责,而用户身份验证由 OAuthAuthorizationServer 负责,OAuthAuthorizationServer 默认存在于 Providers 文件夹中。

我们收到的不记名 token 不是针对特定客户端的,因此任何人都可以拦截它们。因此只能通过 SSL 使用它们。

请通过此链接

http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/

关于c# - 使用 Restful asp.net Web api 和安全 API 进行用户登录身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374861/

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