有很多关于微服务架构的讨论。我想知道的是,如何解决安全和用户身份验证问题?例如:我开发了一个微服务,为工作流引擎提供Rest服务接口。该引擎基于JEE并运行在应用服务器上,如GlassFish或Wildfly。工作流引擎的核心概念之一是每个调用都是以用户为中心的。这意味着根据当前用户的角色和访问级别,工作流引擎会生成个性化结果(例如,以用户为中心的任务列表或处理依赖于用户在过程中的角色的待处理任务)。因此,某个服务不是从任何地方都可以访问的。例如,如果有人计划实现一个现代Ajax基于JavaScript的应用程序,该应用程序应该使用工作流微服务,则会出现两个问题:
1) 为避免JavaScript/Ajax的跨脚本问题,JavaScript Web应用程序需要在与微服务运行相同的域下部署
2) 如果微服务强制进行用户身份验证(在我的情况下是这样),则应用程序需要提供透明的身份验证机制。
如果客户端需要访问多个强制进行用户身份验证的以用户为中心的微服务,则情况变得更加复杂。最终,我总是得到这样一种架构:所有服务和客户端应用程序都在同一应用服务器下运行,位于相同的域下。如何解决这些问题?对于这样的架构,最佳实践是什么?
1) 为避免JavaScript/Ajax的跨脚本问题,JavaScript Web应用程序需要在与微服务运行相同的域下部署
2) 如果微服务强制进行用户身份验证(在我的情况下是这样),则应用程序需要提供透明的身份验证机制。
如果客户端需要访问多个强制进行用户身份验证的以用户为中心的微服务,则情况变得更加复杂。最终,我总是得到这样一种架构:所有服务和客户端应用程序都在同一应用服务器下运行,位于相同的域下。如何解决这些问题?对于这样的架构,最佳实践是什么?