安全

本指南描述了如何通过配置适当的身份验证和授权SPI实现来保护Apache Causeway应用程序。

安全体系结构

Apache Causeway为身份验证和授权定义了SPI:

  • 所谓“身份验证”是指使用一些凭据(通常是用户名和密码)登录应用程序。身份验证还意味着查找用户所属的角色集。

    该框架允许通过身份验证器SPI公司。.

  • “授权”是指权限:授予角色访问应用程序功能(域对象成员)的权限,以及授予用户这些角色的权限。

    该框架允许通过权威人士SPI公司。

这些SPI有几种实现方式可供选择;这些是本指南的主要内容。

除了安全SPI实现之外,还有许多与安全相关的扩展:

请注意,身份验证器和authorizor组件可以混合使用。例如,密钥斗篷或Spring OAuth2身份验证器可以与Secman一起用于授权。

其中最重要的可能是一键破解,它使用

权限

这个权威人士SPI定义了两种类型的权限:

  • 阅读权限意味着用户可以查看对象成员;它将在UI中呈现。

    仅具有读取权限的操作将显示为禁用(“灰显”);无法编辑具有只读权限的属性。

  • 写入权限意味着可以更改对象成员。

    对于操作,这意味着可以调用它们。

如果两者都不存在阅读也不是权限,则用户将看不到该功能。

审计

安全性的另一个方面是审计:记录哪个用户修改了哪些数据。

Apache Causeway提供交互上下文可以用于跟踪正在调用的操作,并且实体属性更改订阅服务器捕获作为结果修改的数据(审核)。什么时候?互动s被持久化(如通过执行日志扩展),这提供了极好的可追溯性。这个审计跟踪模块提供了实体属性更改订阅服务器将审计条目持久化到数据库。

对于命令订阅服务器SPI还可以用于捕获操作。这个命令日志扩展提供了这个SPI的简单实现。

程序员API

一般来说,您的域对象(或者更广泛地说,您的应用程序)应该不知道与它们交互的用户/角色;应用安全权限是框架的责任。

如果您需要确定当前用户的身份,通常可以使用Apache Causeway用户服务API,形式为用户记忆.

例如:

final UserMemento用户=userService.getUser();最终列表<RoleMento>roles=user.getRoles();for(角色经理角色:角色){字符串roleName=角色.getName();。。。}

每个角色的名称属性对提供角色的领域和角色标识本身进行编码。

如果使用Wicket查看器,然后注意还有另一个在内部使用的角色(即org.apache.causeway.viewer.wicket.roles。用户).