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

时间:2016-06-14 06:45:09

标签: angularjs asp.net-web-api oauth hmac identityserver3

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

我可以找到很多东西,它真的让人困惑的是: OAuth,IdentityServer,HMAC以及Auth0。

我检查了HMAC并通过控制台应用程序使用了webapi。 但是,我无法找到使用webapi的项目 基于JS的前端框架(如角度)。通常有具有大量代码的控制台应用程序。我想我怎么用Angular js来做这个呢?

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

现在我可以看到一个Auth0。在潜水之前,我想做 确定它是否是可取的身份验证和授权框架 对于webapi。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

移动到auth0,他们提供了包括Social IDP在内的所有身份验证和授权。您只需要浏览他们的仪表板即可创建应用程序和资源等。如果您没有太多要求,则可以使用慷慨的免费套餐。

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

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

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

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和Access令牌。

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

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

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

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