面向服务架构的集中式身份验证

时间:2013-04-28 00:09:21

标签: web-services authentication authorization soa

我正在探索面向服务的基本架构,我想知道如何在整个服务中最好地处理用户身份验证。

作为一个非常简单的例子,假设我们有一个博客应用程序,可以调用另外两个服务:

  1. 用于存储用户数据和交换访问令牌凭据的用户/身份验证服务
  2. 用于管理帖子数据的帖子服务
  3. 假设该应用程序的用户正在尝试删除特定帖子,并且只允许具有“管理员”角色的用户这样做。

    需要提出以下要求:

    • app - > AUTH

      验证当前用户(通过某种令牌)。如果令牌过期,应用程序可以将用户重定向到登录表单等。

    • app - >讯息

      删除帖子。

    • 帖子 - > AUTH

      在删除帖子之前,帖子服务需要确保请求用户有权这样做。验证当前用户(通过令牌)并确保他们具有“admin”角色。

    这是一个非常简单的例子,但我很好奇人们如何在他们的服务中处理auth。似乎每个服务都需要单独调用身份验证服务才能授权请求。是这样的吗?在这种SOA中有没有更好的方法来处理auth?

    谢谢!

1 个答案:

答案 0 :(得分:6)

您可以实施identity provider - 一旦用户使用授权/身份验证服务进行身份验证,她就会获得一个标识她的令牌。此令牌可以识别她(角色/声明)并由身份验证/授权服务私钥签名。当服务获取安全令牌并且由受信任的机构签名时,它不需要再次转到身份验证/授权服务。

如果您的系统具有更高的安全要求(例如,在用户级别),您可能需要精心设计的声明或在每个请求上访问授权系统。我曾经在一个系统上工作过一次,其中某些类型的信息需要在每次访问时获得授权,其他类型的基于角色的安全性都可以 - 您的millage可能会有所不同。