REST easy with kbmMW #4 – Access management

在前面有关如何使用kbmMW创建REST服务器的文章的基础上,我们现在已经到了应该考虑访问管理的阶段。

什么是访问管理?这是“允许谁做什么"的问题。

很明显,这个世界中存在数据,应该保护他而不被我们未授权的人/进程读取,创建或更改。反过头来说,这些数据应该受到保护,只有我们信任的人/进程才能访问。

有的数据可以免费被人/进程阅读,但永远不允许被修改等等。

幸运的是,kbmMW内置了一些功能来解决上面的问题。

我们首先在main form中添加一个TkbmMWAuthorizationManager(之前帖子中的Unit7)。

我们可以按原样使用授权管理器(authorization manager),但是将它连接到kbmMWServer实例通常是有意义的。因此,将属性kbmMWServer1.AuthorizationManager设置为指向kbmMWAuthorizationManager1
这样,授权管理器(authorization manager)将检查每次调用应用程序服务器的访问权限。

kbmMW授权管理器是一个可理解为下面主题的实体:

  •     resource(资源)
  •     actor(演员)
  •     role(角色)
  •     authorization(授权)
  •     constraint(约束)
  •     login(登录)

资源基本上是您想要为其添加某种保护的任何内容。它可以是数据库相关的,也可以是一个特定的对象,或者是您希望确保的功能或服务仅以您希望的方式处理,由您授予访问权限的人/进程处理。资源可以分组在资源树中,其中访问一个资源也自动提供对该资源下的资源的相同访问。

演员通常是一个人(或一个人的登录凭证),一个过程或其他标识“某人”的人,他们想要访问您的资源。

角色是一种对一般访问模式进行分类的方法。图书馆中的角色可能是图书管理员,管理员和借用者。银行中的角色可以是客户,出纳员,职员,管理员等等。这个想法是每个角色对各种资源都有不同的访问权限。演员通常至少会被赋予一个角色。演员可以拥有不同的角色,例如,取决于演员登录的方式或来自哪里。

授权是作为参与者或特定资源上的角色运行的“许可”。授权可以是否定的,因此特别拒绝对特定资源及其子树的参与者或角色访问。

约束是对授权或登录的限制。授权可能仅在特定时间范围内有效,或者允许从特定设备等访问,或者登录只能在白天等进行。

登录是演员/密码和登录令牌之间的匹配。当演员试图登录时,系统会验证登录名,密码,请求的角色以及与登录相关的任何约束。只有在检查完所有内容并允许登录后,才会发出令牌(Token), 对基于kbmMW的服务器发出的每个请求,actor /user/process需要发送Token。

因此,让我们定义两个我们想要访问REST服务器的角色。我们可以选择将它们命名为“Reader”和“ReadWriter”,但由于kbmMW对角色命名(以及角色和资源)没有任何限制,只要名称在其类别中是唯一的,我们就可以为它们命名(角色,演员,资源)。

  •     Reader
  •     ReadWriter

在代码中我们定义了这样的角色(例如在main form的OnCreate事件中):

 kbmMWAuthorizationManager1.AddRole('READER');
 kbmMWAuthorizationManager1.AddRole('READWRITER');

 我们还需要告诉授权管理器哪些参与者存在,以便它可以与演员匹配以尝试登录。

简单的方法是将它们预定义给授权管理器。例如,这也可能发生在表单的OnCreate事件中,或者在第一次访问服务器之前的其他地方。可以根据需要从数据库或配置文件或LDAP等定义actor。

猜你喜欢

转载自www.cnblogs.com/kinglandsoft/p/9279728.html
今日推荐