我有一个身份验证的情况,我正在试图找出最好的解决方案。请参阅下面的图表,但基本上我可以有多个不同的服务器,我们的用户可以访问(标记为“用户服务器”的图像)。有人可以登录其中一个,但可能其他人没有。
然后我有一个“注册服务器”,在那里他们可以签出任何服务器可能需要的项目。所有服务器共享一个池。
每个用户服务器都有自己的身份验证,以查看用户是否有权访问它,仅仅因为用户有权访问一个服务器并不意味着他们有权访问另一个服务器。然而,注册服务器需要尊重来自任何用户服务器的请求,而不是其他任何地方(没有匿名访问)。如果有帮助,用户服务器都在.net 4.6framework中,注册服务器将在.net core中。
我最好的选择是:
-
用户服务器向注册服务器发送请求,以及将为其自身工作的认证令牌(基于用户进行呼叫)。
-
注册服务器将相同的令牌发送回用户服务器,询问“这是有效的吗?”
-
用户服务器返回“是这是有效的,执行正确的身份验证”
-
注册服务器根据原始的1)请求发回一个响应。
这样注册服务器就不需要有自己的身份验证,它只尊重试图访问它的服务器的身份验证。我在注册服务器上放了一个经过身份验证的服务器列表,我很好。
问题是,这听起来对吗?这是不是太健谈了?有没有更好的方法来做我想要的?任何想法都将不胜感激。