我创建了一个基于PHP Slim框架的Rest API,使用JSON Web Tokens(JWT)进行身份验证和授权。
要使用API,客户端必须首先通过发送其凭据到特殊的/auth/token
路由来进行身份验证,如果正确,则返回包含允许权限列表的数字签名令牌。所有后续对API的请求都需要令牌进行身份验证和授权。这是相当标准的做法,效果很好。
但现在我想将/auth/token
服务分离成自己的微服务,以便将来可以重用它与其他API一起使用。
问题是,如何对JWT进行身份验证,因为API没有访问用于生成它的密钥?
我使用Firebase\JWT\JWT
生成令牌,该令牌将移动到新的身份验证服务中。而且,我使用tuupola/slim-jwt-auth
中间件来验证每个API上接收到的令牌。
由于每个API和新的身份验证服务都将在同一主机上运行,因此我可以在它们之间共享密钥,但这感觉不是一个好的做法。有更好的方法吗?
tuupola/slim-jwt-auth
似乎不支持它),那么让“授权服务器”创建和验证令牌的想法非常好。我应该能够创建一个中间件层来对每个路由应用验证。 - David