【发布时间】:2017-11-25 01:17:37
【问题描述】:
在过去两天阅读了有关 Oauth2 协议的内容后,我仍然需要一些帮助来确定在我们部署了 Authorization Service 的系统中使用的最佳赠款是什么。
该应用使用Spring Cloud, Spring Boot and Spring Security。它有一个使用Eureka 的service discovery,所有用户的请求都通过API gateway 到达内部网络中的不同微服务。所有这些微服务,包括网关,都使用Zuul 代理。 Authorization Service 将是另一个将用户存储在自己的数据库中的微服务。目前有一个前端部署在网关中,并在Angular 4 中开发。没有任何外部应用程序向我们的系统发出请求,并且会有一群具有一小部分可能角色的用户将使用它,并且必须使用用户名和密码登录。
在这种情况下,我们应该选择Authentication Code grant 还是Password grant 可以?或者可能根本不是Oauth2?我看到和阅读的所有使用Authentication Code grant 的示例都要求用户允许客户端在登录后访问资源。在我们的例子中,客户端将是网关,因此用户不应该拥有授予它任何东西。 Password grant 似乎消除了这种情况,因为用户的凭据用于告诉 Authorization Service 提供令牌。我错过了什么吗?
除此之外,Authorization Services 的示例还包括 Facebook 或 Google。使用这些时,一旦用户在登录后授予客户端应用程序对资源的访问权限,后续请求将不会显示此屏幕,他们只需要使用其凭据登录即可。授予访问权限的信息存储在哪里? Facebook 怎么知道,一旦用户向应用授予了对资源的访问权限,下次他登录时就不需要再次访问了?
【问题讨论】:
标签: java security oauth-2.0 microservices spring-cloud-netflix