我正在考虑使用Liferay的权限系统在外部Java应用程序(而不是Portlet)中实现访问安全性。 Liferay具有用于管理用户,组,角色,权限和资源的强大功能。如果我可以利用这些资源而不是在外部应用程序中重新发明轮子,那将是很好的。
Liferay和我们的外部应用程序配置为使用相同的CAS和LDAP进行身份验证,因此它们共享相同的用户。
到目前为止,我已经成功使用Liferay的JSON-WS API来管理用户的角色。这很好,但是我需要将其下一步。
我可以使用JSON-WS API定义和管理Liferay权限和资源吗?
我看到了用于检查用户是否具有某些权限(例如,具有用户权限)的API方法,但是没有看到用于创建和分配权限和资源的方法。
诚然,我需要更好地了解Liferay中如何定义权限和动作。据我了解,权限和操作是在与特定Portlet关联的XML文件中定义的。
在我们的案例中,外部应用程序将没有任何Portlet,那么我将如何定义自定义权限和操作? (也许创建一个仅用于定义动作和资源的定制portlet?)。我仍然需要一种以编程方式定义资源的方法,因为需要在我们的外部应用程序中为某些域对象创建资源。
最佳答案
我知道这已经很老了,但是我还是想回答这个问题,以备将来参考。
您在这里有一个新主意,但我还不太了解,您打算如何检查用户在您的应用程序中是否具有特定权限。您是否打算在每个请求中查询Liferay JSON-WS API,以验证您是否具有权限?如果在服务器端执行此操作,则可能会导致性能下降,但否则此想法似乎还可以。但不要在客户端(通过javascript在浏览器中)进行操作-用户可以操纵请求或响应来获取对敏感信息的访问。
据我所知,您无法使用JSON-WS API定义权限和资源,但是它们存储在数据库中,并且可以通过Service Builder创建自己的JSON-WS服务以为您的应用程序公开这些功能。
就定义权限而言-由于您将不得不构建自己的服务来管理事务,因此您最好使用适当的基于XML的配置来定义权限,并将其与服务一起部署。
我对您最终采用哪种解决方案感到有些好奇,因为我认为您已经完成了这个项目。