因此,我们是一群学生,为我们的大学打造了一个在线平台。我们将我们的平台建模为一组服务。
例如,服务“A”可能只存储用户的个人信息,并在其上公开一个 REST API。另一个服务“B”可能只发送电子邮件。
现在我们想使用 OAuth 进行身份验证和授权(我知道 OAuth 是一个授权框架,但我们想大致做 google 所做的事情)。
一个典型的场景可能是这样的:
- 用户请求服务“A”的网页。
- 服务“A”看到该用户未通过身份验证,因此它将向身份验证服务器发送重定向。
- 用户输入其凭据,然后将访问令牌授予服务“A”。
现在,服务“A”可能需要调用另一个服务“B”。请注意,这是一个内部服务器到服务器请求。各种其他服务可能正在调用服务“B”。
我想确保在调用服务“B”时,只有允许的服务才能调用它。例如,“A”有权调用“B”,但“C”没有。换句话说,我想确保只有特定服务的白名单调用者才能调用它。
所以我的问题是,是否可以使用 OAuth 保护内部服务到服务调用?
可以以更简单但安全的方式完成吗?
我不希望令牌委托:也就是说,我不希望向服务 A 发出的第一个令牌在其他地方使用。假设如果“A”正在调用“B”,那么“A”有权这样做,即使没有用户登录。
我的尝试:(可能是错误的,请纠正我) * Auth 服务器可以向每个服务发布 clientIds 和客户端密码。* 想要调用另一个服务的服务使用密钥和秘密向 Auth 服务器标识自己。* 如果服务被允许调用目标服务,则授权服务器颁发令牌,否则返回禁止。
但即使在这种情况下,Auth 服务器也做的太多了。
每个服务本身不能控制其他服务可以调用它吗?
谢谢。

