首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单页应用程序中的安全认证/授权

单页应用程序中的安全认证/授权
EN

Stack Overflow用户
提问于 2016-08-20 20:02:07
回答 1查看 813关注 0票数 5

我正在建造以下建筑物:

  • 一个JavaScript单页应用程序;
  • 公开Node.js API的RESTful后端,它将存储用户数据;

用户凭据(电子邮件/密码)可以通过单页应用程序创建,并存储在后端。不需要与外部提供者(如Facebook登录, )进行交互,但这在将来可能是必要的。

一旦用户使用其凭据进行身份验证,单页应用程序应该通过其RESTful API与后端交互。

我很难理解如何建立基于凭证的用户身份验证和授权,这种方式既安全又与单页应用程序的约束兼容。

我找到了关于OAuth 2.0JSON令牌的信息。我无法想象我应该如何使用这些技术来实现我的最终目标,不管这些技术是应该一起工作还是独立工作,而且我也很难意识到每一种技术所带来的缺陷。

您能否提供一个步骤和组件,以便为带有自定义后端的单页应用程序建立成功的身份验证/授权机制,如果可能的话,还包括以下主题:

  • 与OAuth或其他方法相比,使用JWT 2.0的优点/缺点;
  • 使用cookie而不是以不同的方式存储令牌(例如LocalStorage)和安全问题;
EN

回答 1

Stack Overflow用户

发布于 2017-07-19 09:44:02

您可以使用没有Oauth2的JWT和没有JWT的Oauth2,也可以一起使用它们。

请记住,OAuth2管理授权,而不是身份验证。OAuth2不介意如何对用户进行身份验证。为了处理身份验证,tou可以查看OpenId连接,这是Oauth2之上的一个层。OpenId连接将向您的应用程序发送一个签名的id_token,其中包含有关用户身份的信息。

使用OpenId连接对用户进行身份验证之后,您可以与OAuth服务器联系以获得access_token (JWT与否)。此令牌将用于与您的API联系。对于SPA应用程序,建议使用隐式格兰特流

对于JWT,它用于id_token (来自OpenId连接),并可用于access_token (OAuth2)。对于access_token,您的令牌可以是引用(SPA推荐的)或值。

通过引用,您的令牌对于客户端是不透明的(例如guid)。按值计算,您的令牌是可解析的,所包含的数据可以由客户端读取。

对于要使用的组件,我亲自使用来自RedHat的RedHat。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39058216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档