我的团队将开发一个内部(已知用户)应用程序,该应用程序具有基于Java作为前端和PL / SQL作为后端的体系结构。因此,目前我们正在考虑更好的解决方案来管理用户/权限,我们有两个选择:
每个用户都有自己的数据库帐户,并授予权限。目前遗留系统使用这种方法,我不喜欢它,因为它根据数据库对象的粒度管理权限。所以,我认为每个用户拥有一个数据库连接是一个糟糕的选择。你能在这里看到更多的缺点吗?
在数据库中构建一些表来存储用户及其权限/配置文件,并构建一个PL / SQL过程来执行登录,生成令牌并在所有其他PL / SQL中包含一个参数来验证此令牌和然后授权(或不授权)执行。
所以,您可以问我:为什么不在您的网络应用程序中管理您的权限?答:那些PL / SQL已经完成并被所有遗留系统使用,并且这个Web应用程序应该按照它运行(即,用户权限应该由PL / SQL管理,其粒度基于请。)
在这种情况下你如何处理?
答案 0 :(得分:1)
我认为使用数据库的内置机制总是优先于滚动我们自己的机制。这适用于登录用户和其他任何内容。
专用用户帐户的最大单一优势是我们可以将给定会话与指定用户链接。嗯,是的,呃。但重点是,在使用通用帐户的Web应用程序中,执行审计认为用户活动或在某些流程中跟踪性能问题会更加困难。
要解决您的主要异议,我们不必在用户级别管理数据库权限。这就是我们担任角色的原因。对于普通用户,角色将提供足够的权限。
所以: