这是一个开放式的问题,所以我道歉。我会尽力保持具体。
我有一个基于Express构建的RESTAPI(实际上是使用Says. js)。在前端,我有一个由非常轻量级的Express应用程序提供的Angular2应用程序。前端对后端(API)进行HTTP调用。
没有人能够在不通过CAS进行身份验证的情况下访问前端或后端。我使用cas身份验证模块在前端实现了CAS身份验证——没问题。但是,API仍然没有受到保护。
我正在尝试找出如何保护后端。我已经实现了CORS保护,只允许来自白名单域的请求。但是,这似乎还不够。
我假设我需要将身份验证令牌与每个REST请求一起发送到后端。我只是不知道如何获得该令牌。
任何朝着正确方向的推动都将不胜感激。
为了保护您的无状态API,您可以使用passportjs和passport-超文本传输协议-承载策略来实现无记名令牌。然后设置(或实现您自己的)分发令牌的服务(参见https://github.com/jaredhanson/oauth2orize)。您可以实现完整的oaut2规范并为令牌交换赠款,或者一种不太复杂的方法可以是:
>
当用户使用用户名/密码进行身份验证时,然后将它们发送到生成令牌的服务(例如255个字符),按用户存储令牌。您可以在此处为不同的身份验证/权限授予不同的权限,但我假设用户是用户。
添加一个护照持有人策略,从本质上查找令牌,检查其有效性
添加一个策略来调用passport.身份验证(“承载”…检查您的令牌-它将查看不记名令牌的授权标头,然后根据数据库检查它并找到适当的用户-否则拒绝(401,返回登录等)
需要对所有要保护的方法执行上述策略(登录除外)
任何受保护的方法都需要一个带有有效承载令牌的身份验证标头,例如授权:承载kj233kj42kdskfksaj_lots_of_letters_and_numbers_ak3k29asd32kad
我希望这有助于你开始。