我尝试构建一个使用 webapi 2 的应用程序 前端的角度js 1 。我一直在研究 安全方面,尤其是基于令牌的安全性。
我可以找到很多东西,它真的让人困惑的是: OAuth,IdentityServer,HMAC以及Auth0。
我检查了HMAC并通过控制台应用程序使用了webapi。 但是,我无法找到使用webapi的项目 基于JS的前端框架(如角度)。通常有具有大量代码的控制台应用程序。我想我怎么用Angular js来做这个呢?
我检查了IdentityServer,发现它的学习曲线对像我这样的新手来说有点令人沮丧。我有现有的db和现有的用户和角色表。我不想使用Identity提供的默认表,而是使用自己的默认表并编写自己的身份验证逻辑。但我也无法找到这些资源。
现在我可以看到一个Auth0。在潜水之前,我想做 确定它是否是可取的身份验证和授权框架 对于webapi。
我被要求在项目中实现基于令牌的身份验证。 我很难找到正确的方法和最简单的方法。我浪费了一个星期,仍然混淆了我应该实施什么。因此,如果您有任何资源以优雅的方式执行webapi安全性,请帮助我。
答案 0 :(得分:0)
首先,我不建议使用HMAC来保护您的API。如果您的私钥被泄露。这意味着入侵者可以轻松访问您的服务!
IdentityServer4和Auth0都用作身份验证和授权框架(Oauth2和OpenID连接框架)。您还可以利用SMAL,WS-federation等。
如果您使用Identityserver4,则需要自己维护服务器。它还涉及您需要具有Oauth2.0和OpenID连接协议的中级知识。如果您正在考虑生产应用程序,则意味着还需要托管identityserver4。
移动到auth0,他们提供了包括Social IDP在内的所有身份验证和授权。您只需要浏览他们的仪表板即可创建应用程序和资源等。如果您没有太多要求,则可以使用慷慨的免费套餐。
关于安全性,Auth0和Identityserver4都是保护资源(API)和应用程序的绝佳方法。
以下架构应同时适用于Identityserver4和Auth0:
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身份验证中间件来验证令牌。