我通过passport-wsfed-saml2策略https://github.com/auth0/passport-wsfed-saml2使用SAML2构建Angular 2应用程序。当我从SAML收到用户信息时,我生成了一个JWT令牌,我用它来验证我正在编写的API上的用户。
所以我有两台服务器, APP / Auth服务器正在为我的应用程序提供服务以及生成我的JWT令牌, API服务器有我的API。两台服务器都有JWT机密的副本,因此当用户从 APP / Auth服务器向 API服务器发送请求时,我会验证他们发送的令牌及其请求用秘密验证它。
现在我的问题是,从您用来生成JWT令牌的同一台服务器上提供应用程序是不好的做法吗?如果是这样,我该怎么办?我应该做更多的事情来验证API端的用户吗?
关于这件事只是感觉很脏......任何帮助都会受到赞赏。
答案 0 :(得分:2)
将应用程序和身份验证系统置于同一服务中本身并不是一种弊端。通常,建议使用解耦服务,但这并不意味着部署可以对服务进行分组,当然也取决于上下文
如果您担心在服务器之间共享密钥,则可以使用非对称密钥对(私有和公共密钥)。只有Auth服务器才能知道私钥才能签署JWT。 API服务器可以使用公钥来验证令牌。