我的 Java EE 应用程序部署在 Glassfish 3.2.1 上,并且需要对 CAS 服务器进行身份验证。CAS 服务器向主体返回经过身份验证的用户所属的所有 Active Directory 组的列表。扩展 javax.servlet.http.HttpServletRequestWrapper 我能够覆盖在列表中搜索角色的 getUserInRole 方法。它工作正常,但假设是:
- AD组和角色相同(一一对应)
- 所以角色不是由应用程序定义的:它们必须被定义为 AD 组
- 所以AD中的群体变得相当大。
最后一点至关重要,因为当其他应用程序使用相同的授权机制并需要多个角色时,AD 组的数量会增加很多,getUserInRole 函数花费的时间也会增加。
因此,即使这种授权方法适用于少数角色和少数应用程序,但在多个应用程序各自具有多个角色的情况下,它可能会出现性能问题。
现在的问题是:我可以使用另一种模式来克服具有以下约束的性能问题吗?CAS 身份验证、GlassFish、Java EE 应用程序。