【发布时间】:2015-12-11 00:05:33
【问题描述】:
关于微服务架构的讨论很多。我所缺少的——或者我可能还不明白的是,如何解决安全和用户身份验证问题?
例如:我开发了一个微服务,它为工作流引擎提供了一个 Rest Service 接口。该引擎基于 JEE,并在 GlassFish 或 Wildfly 等应用服务器上运行。 工作流引擎的核心概念之一是,每个调用都以用户为中心。这意味着根据当前用户的角色和访问级别,工作流引擎会产生单独的结果(例如,以用户为中心的任务列表或处理取决于用户在流程中的角色的打开任务)。
在我看来,因此无法从任何地方访问服务。例如,如果有人计划实现一个基于 Ajax 的现代 JavaScript 应用程序,该应用程序应该使用工作流微服务,那么存在两个问题:
1) 为避免 JavaScript/Ajax 的跨脚本问题,JavaScript Web 应用程序需要部署在与微服务运行相同的域下
2) 如果微服务强制进行用户身份验证(在我的场景中就是这种情况),则应用程序需要提供透明的身份验证机制。
如果客户端需要访问多个以用户为中心的微服务来强制进行用户身份验证,情况就会变得更加复杂。 我总是最终得到一个架构,其中所有服务和客户端应用程序都运行在同一域下的同一应用程序服务器上。
如何解决这些问题?这种架构的最佳实践是什么?
【问题讨论】:
-
我不确定跨脚本是否是对第一个问题的正确描述。我的意思是跨域资源共享 (CORS)。
标签: authentication jakarta-ee microservices