ASP.NET WebApi 安全性:与 HMAC、OAuth、IdentityServer、Auth0 的混淆

Avi*_*i-B 5 oauth hmac asp.net-web-api angularjs identityserver3

我试图构建一个在前端使用webapi 2angular js 1的应用程序。我一直在研究安全方面,尤其是基于令牌的安全性

我可以找到很多东西,但它确实令人困惑要实现什么:OAuth、IdentityServer、HMAC 和 Auth0。

我检查了 HMAC 并通过控制台应用程序使用了 webapi。但是,我一直没能找到前端基于JS的框架使用webapi的项目(比如angular)。通常有很多代码的控制台应用程序。我想知道如何使用 Angular js 来做到这一点?

我检查了 IdentityServer,发现它的学习曲线对于像我这样的新手来说有点令人沮丧。我有现有用户和角色表的现有数据库。我想使用自己的并编写自己的身份验证逻辑,而不是使用 Identity 提供的默认表。但我也无法找到这些资源。

现在我可以看到一个 Auth0。现在在深入研究之前,我想确定它是否是 webapi 可取的身份验证和授权框架。

因为我被要求在项目中实施基于令牌的身份验证。我很难找出正确的方法和最简单的方法。我已经浪费了一个星期,仍然困惑我应该实施什么。因此,如果您有任何资源以优雅的方式执行了 webapi 安全性,请帮助我。

小智 0

首先,我不建议使用 HMAC 来保护您的 API。如果您的私钥被泄露。这意味着入侵者可以轻松访问您的服务!

IdentityServer4和Auth0都用作身份验证和授权框架(Oauth2和OpenID连接框架)。您还可以使用 SMAL、WS-federation 等。

如果使用Identityserver4,则需要自己维护服务器。它还涉及您需要具有 Oauth2.0 和 OpenID 连接协议的中级知识。如果您正在考虑生产应用程序,这意味着您还需要托管 Identityserver4。

转向 auth0,他们提供开箱即用的完整身份验证和授权,包括社交 IDP。您只需浏览他们的仪表板即可创建应用程序和资源等。如果您没有太多要求,则可以使用慷慨的免费套餐。

关于安全性,Auth0 和 Identityserver4 都是保护您的资源(API)和应用程序的绝佳而优雅的方式。

以下架构应该适用于 Identityserver4 和 Auth0:

  • 您的前端应用程序会将用户重定向到/authorize端点以对用户进行身份验证(执行隐式授予流程)。

GET /authorize? client_id=[Client id]& scope=[Scopes]& response_type=[Response types]& audience=[API Identifier]& redirect_uri=[Redirect URI]& state=abc& nonce=xyz

http://docs.identityserver.io/en/latest/endpoints/authorize.html

https://auth0.com/docs/api-auth/tutorials/implicit-grant

身份验证成功后,您的应用程序将收到 idToken 和访问令牌。

  • 从前端应用程序向 Web API 端点发出 HTTP 请求时,使用访问令牌作为授权标头。

  • 在您的 API 服务器中,验证令牌并返回资源。您可以使用 ASPNET CORE 身份验证中间件来验证令牌。

http://docs.identityserver.io/en/latest/topics/apis.html

https://auth0.com/docs/api-auth