node.js – 你应该如何处理auth并在微服务之间共享用户信息?
TLTR:无论服务器或技术的位置如何,通过Auth和用户信息的服务进行通信的好方法是什么 我正在尝试了解微服务,我对如何访问用户信息和控制多种服务访问方式有点不清楚.如果我接近这个完全错误,请告诉我. 例如,我有一个用于Blog CRUD操作的基本服务和一个用于上传和存储图像和视频的服务.我还没有对授权或用户做过任何事情(除了我在我的模型中最终存在UserIds(例如在我的博客模型ObjectID中为作者,评论者等). 我希望保持尽可能分开(为了学习目的而更多),而目前我正在Node.js中构建它,我希望能够交换进出不同的技术,如nginx,一个java / go / python服务或不同的存储(目前是mongo,但希望能够切换到sql作为选项) 我目前如何构建这些结构是我有两个服务构建为Express.js应用程序,目前我使用node-http-proxy代理快递服务(这只是为了保存现在设置nginx但我不想要依赖于nginx). 我应该如何处理: >经过身份验证的用户或某些路由(例如,在创建新帖子或更新/删除时)和Not获取帖子时读取(最终我也希望合并角色) 主要目的是我希望将Auth和Users保留在可以在任何其他服务中调用的单独服务中,并存储在另一个数据库中,例如,如果它们位于不同的物理服务器上. 有人向我建议我可以使用HTTP / S做到这一点,但有更好的方法来做到这一点,任何人都可以指向任何实现示例,Node.js将是更好但不是必要的 这可能需要一些服务注册表,但我有点失去了如何实现它 身份验证层作为自己的应用程序非常适合SOA设计.有一个HTTP端点无法直接访问微服务数据库,SOA最佳实践是:
参考http://martinfowler.com/microservices/ 什么是身份验证层或服务以及一个服务器如何确认身份验证?一种基于客户端的持久性是HTTP cookie,它严格地挂钩到域名,因此如果没有明确的身份验证步骤,在多个域之间重用相同的cookie并不容易. 如果您能够传递某个密钥或标头,http_request可以提供不引人注目的身份验证,那么从1.5.4版本开始,该模块就成为了内置的Nginx核心:http://nginx.org/en/docs/http/ngx_http_auth_request_module.html
可通过http://auth_service.localhost访问的端点(选择您自己的URL)是独立的,并且拥有自己的数据库并且只做一件事 – 对用户进行身份验证.机制可以依赖于某个密钥或头部甚至IP地址.要抑制后续请求,您可以缓存响应. SOA很难,但我建议彻底阅读:https://www.nginx.com/blog/introduction-to-microservices/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |