2016-02-09 103 views
10

我试图从一个相当标准的用户管理的现有应用程序设计微服务:有认证和授权,并存储用户数据。授权和用户微服务设计

我的深化发展授权服务器来管理用户使用OAuth2作为授权认证授权。另一方面,我必须存储用户的信息/配置文件。

问:应该授权服务器管理:

  • 授权和用户API?因此,其他微服务可以联系授权服务器/me获得当前用户,但也/users获得用户的完整列表。
  • 或者只有授权和我必须创建用户微服务因此授权服务器只公开/me与用户相关的API和用户微服务将公开/users

第一个解决方案是简单一点但授权服务器会变少通用的(可重复使用的少),因为用户应用数据模式将它(User表的数据库中的数据模型)的一部分。


另一项要求是授权服务器如果用户授权它之前就存在应检查。

没有用户自动创建,必须由管理员邀请用户访问。 关于该要求,第一个解决方法很简单,因为授权服务器访问用户数据库,但第二个解决方案授权服务器意味着:

  1. 共享数据库用户服务(哼哼不喜欢这样)
  2. 呼叫用户服务使用授权REST API(例如)前
  3. 授权服务器应mainta在最小User表(可以改名Account)和管理员将无法创建用户在用户服务授权服务器

我觉得解决方案是出在只有用户帐户,但有关任何建议2。3.

3.在首位似乎是最好的,但如果我想切换到另一个授权服务器,例如一公共(OAuth2用户)如谷歌,Github上,脸谱等..安能妥协,因为我们无法控制用户帐户的创建。

有没有反馈意见?

+0

您如何管理身份验证? –

+0

外部服务(基于CAS)负责认证。但我不是这项服务的拥有者。但是,您可以简单地通过使用基于数据库用户信息的基本表单身份验证 – Kakawait

回答

-1

这里有多个选项,请提供更多详细信息。例如你能够使用现成的授权服务器实现(开源)吗?你基于什么技术?

我能够轻松地集成IdentityServer(https://github.com/IdentityServer/IdentityServer3),并将其插入到自己的“用户”服务中,只需简单地实现一些接口即可。它也可能为您处理数据库硬件(存储OAuth 2.0的所有数据,如秘密的客户端,授权码等)。 IdentityServer允许您提供自己的链接,以便为用户提供“注册”操作,您还可以让管理员接受或拒绝注册,因此只有已接受的用户才能登录。

一般来说 - 按照OAuth2.0的RFC要求实施授权服务(详情请参阅https://tools.ietf.org/html/rfc6749)绝不是小菜一碟。而需要时使用经过验证的解决方案。

问候!