API网关和微服务认证
Posted
技术标签:
【中文标题】API网关和微服务认证【英文标题】:API gateway and microservice authentication 【发布时间】:2018-01-06 19:35:11 【问题描述】:API 网关和微服务的工作原理。
谁能用网关解释一下微服务架构的基本流程。我找不到正确的答案。
假设我们在不同的实例上运行身份验证服务器和客户微服务,并且在所有服务之前我们有一个 API 网关。
我的问题是。
当用户尝试使用用户名和密码登录时,API网关调用auth server并将访问令牌返回给用户。
然后用户尝试访问在单独实例上运行的特定 URL(/customers - 客户微服务)。 API 网关是做什么的?
-
使用身份验证服务器验证令牌并获取用户 ID 并将请求传递给 具有用户 ID 的客户服务?
或
-
验证令牌并将请求传递给客户微服务使用访问令牌?客户微服务负责检查用户 ID(对身份验证服务器进行 HTTP 调用)?
【问题讨论】:
【参考方案1】:我认为最常见的做法是将 API 网关也用作安全网关,这意味着 API 网关负责 SSL 终止和令牌验证。如果令牌验证成功,您可以将用户 ID 或用户 API 密钥作为标头并将请求转发到微服务。此外,您还可以决定在 API 网关上执行身份验证和授权(通常借助 API 管理解决方案)。
关于您的选项 #2 - 我认为验证令牌 2 次没有意义。最佳实践是在边缘执行安全验证,因为在验证失败的情况下,您使用的资源更少(提前拒绝)
【讨论】:
【参考方案2】:要回答您的问题,它与您提到的选项#2 很接近。 API 网关通常会检查身份验证令牌的有效性,然后将请求传递给您的微服务。但是,您需要在设计时决定您的微服务是否还会对令牌进行另一级别的验证。
请注意,API 网关不会强制执行 Authorization ,授权是您的微服务必须强制执行的。
【讨论】:
以上是关于API网关和微服务认证的主要内容,如果未能解决你的问题,请参考以下文章