相关疑难解决方法(0)

RESTful身份验证

RESTful身份验证的含义是什么?它是如何工作的?我无法在Google上找到一个很好的概述.我唯一的理解是你在URL中传递会话密钥(remeberal),但这可能是非常错误的.

authentication rest restful-authentication rest-security

726
推荐指数
11
解决办法
39万
查看次数

我是否必须在cookie或本地存储或会话中存储令牌?

对不起,也许这是许多其他人提出的问题,但我真的很困惑,因为一些参考文献有很多不同的方法.

我使用React SPA,Express,Express-session,Passport,JWT

所以我对Cookies,Session和JWT/Passport感到困惑.

许多网站使用cookie来存储购物车令牌.到目前为止,我已根据会话ID存储购物车数据,而不添加任何cookie.

因此,当用户访问我的网站时,我会将其与他们匹配 req.sessionID,然后检索数据库中的数据,如购物车和用户会话.

所以我的问题是我需要存储cookie吗?因为我可以通过req.sessionID访问它来获取所需的数据.

第二个

我使用了一个身份验证passport-google-oauth20.在我成功登录后,数据被保存到会话中.并将其发送到客户端我必须通过URL查询发送它?token='sdsaxas'.

在这种情况下,我得到了很多意见分歧.有人将其保存到本地存储中,有人通过使用JWT将其转换为令牌将其保存为cookie.

 jwt.sign(
        payload,
        keys.jwt.secretOrPrivateKey, 
        {
            expiresIn:keys.jwt.expiresIn // < i dont know what is this expired for cookies or localstorage ?
        }, (err, token) => {

            res.redirect(keys.origin.url + "?token=" + token);
        });
Run Code Online (Sandbox Code Playgroud)

结论是一切都与会话有关所以我可以用sessionID做所有事情?没有cookies或localstorage

只有通过执行一次或每次页面刷新并检索数据然后保存到redux,因为我使用React SPA

javascript jwt

18
推荐指数
2
解决办法
1万
查看次数

JWT身份验证和刷新令牌实现

我正在开发一个具有自己的身份验证和授权机制的REST应用程序.我想使用JSON Web Tokens进行身份验证.以下是有效且安全的实施吗?

  1. 将开发REST API以接受用户名和密码并进行身份验证.要使用的HTTP方法是POST,因此没有缓存.此外,在运输时将有SSL用于安全性
  2. 在身份验证时,将创建两个JWT - 访问令牌和刷新令牌.刷新令牌的有效期将更长.这两个令牌都将用cookie编写,以便在每个后续请求中发送
  3. 在每次REST API调用时,将从HTTP标头中检索标记.如果访问令牌未过期,请检查用户的权限并允许相应的访问权限.如果访问令牌已过期但刷新令牌有效,请重新创建新访问令牌并刷新具有新到期日期的令牌(执行所有必要的检查以确保用户的身份验证权限未被撤销)并通过Cookies发回
  4. 提供一个注销REST API,它将重置cookie,因此在登录完成之前,将拒绝后续的API调用.

我对刷新令牌的理解是:

由于存在刷新令牌,我们可以缩短访问令牌的有效期,并经常(在访问令牌到期时)检查用户是否仍有权登录.

如果我错了,请纠正我.

security authentication rest jwt

10
推荐指数
1
解决办法
1万
查看次数

SSO与Angular6应用程序集成

我是Angular应用程序的新手.我需要一个建议来实现与Angular6(SPA)的SSO集成.我没有在网上获得完整教程的任何内容.

基本上,我是一个PHP开发人员,我做了与PHP应用程序的SSO集成.由于Angular6是UI,我不知道如何使用Angular6管理秘密和重定向以及其他事情.

所以如果有人建议我实施Angular6和SSO集成的步骤(或Github样本)会更好,那么最好的方法是什么?

javascript single-sign-on angular angular6

10
推荐指数
1
解决办法
6860
查看次数

如何使用oAuth2对SPA用户进行身份验证?

好吧,我花了几天时间寻找一个合适的解决方案,以便在使用SPA时如何正确地验证用户身份.

  1. 我有自己的网站.
  2. 我有自己的API.
  3. 我有自己的单页应用程序.
  4. 我有自己的用户数据库.

目标:我需要通过提供用户名和密码来获取access_token.

我查看了OAuth2 Implicit Grant,但它要求用户在成功验证后批准/拒绝应用程序.它在我的情况下不起作用,因为我拥有应用程序和API.

我查看了OAuth2密码授予,这是不完美的,因为我需要公开client_id/client_secret.

我正在考虑OAuth2的原因是因为API最终会公开.

有这样做的标准方法吗?我目前的选择:

  1. 忘记OAuth2并在用户POST用户名/密码时手动生成access_token(在这种情况下,当API上线时我必须引入OAuth2)
  2. 使用OAuth2密码授予并在服务器上注入client_id/client_secret,这样只是为了保持客户端应用程序非常简单(也避免所有这些dev/staging/prod client_id/client_secret对)

authentication api oauth oauth-2.0 single-page-application

7
推荐指数
1
解决办法
891
查看次数

使用微服务和网关进行身份验证和授权

I\xe2\x80\x99m 正在尝试学习微服务架构。我对如何使用微服务和网关应用程序进行身份验证和授权感到有点困惑。

\n\n

对于这种情况,假设我为电子商务应用程序提供以下服务:\n1。AccountService(管理用户帐户)\n2. 列表服务(管理应用程序上的产品列表)\n3. 购物车服务(管理用户\xe2\x80\x99s帐户中的项目)\n4. 订单服务(管理应用程序上用户订单的处理)。

\n\n

从我读过的诸如此类的内容中总是提到 \xe2\x80\x9cauth 服务器。\xe2\x80\x9d 那么,我的第一个问题是这个身份验证服务器到底是做什么的?它的名字告诉我它对应用程序的用户进行身份验证。但是,这是否意味着该身份验证服务器必须存储用户数据?那么,让存储用户帐户信息的帐户服务同时也是存储有关用户的所有信息的身份验证服务器是否有意义?或者,Auth 服务器是它自己的微服务吗?如果是这样,它存储了哪些关于用户的信息而帐户用户没有存储?我是否应该将网关应用程序设置为身份验证服务器,因为所有请求都必须通过它?

\n\n

我的第二个问题与微服务之间的授权有关。具体来说,它是如何工作的?根据我的研究,这似乎是通过存储权限的令牌来完成的。对于许多技术堆栈(无论是 PHP\xe2\x80\x99s Laravel、Adonis、Java Spring 等框架的 Javascript),OAuth 包通常都可以广泛使用。所以,我想隐藏内部工作原理的包会让我感到困惑。但是,无论如何......根据我的研究,标准做法似乎是让 OAuth 服务器(再次回答第一个问题,无论其真正含义是什么)处理身份验证,而各个微服务处理授权。具体来说,这是通过包含权限的令牌来完成的。那么,微服务如何准确验证这些权限呢?

\n\n

我是否只在各个包中安装相同的 OAuth 包并使用它们的授权功能?但是,\xe2\x80\x99 是否会将服务与该技术结合起来,这违背了微服务的理念?或者,我是否也对网关应用程序进行授权,并让其他微服务只是资源存储库,因为无论如何公众都无法直接访问它们(假设其已 Docker 化)?或者其他方式?

\n\n

再次感谢您的帮助。同样,我仍在尝试了解微服务架构。所以,如果这些问题听起来太微不足道或太愚蠢,我很抱歉。:)

\n

microservices

6
推荐指数
1
解决办法
3841
查看次数