Authentication LifeRay中的编程身份验证

Authentication LifeRay中的编程身份验证,authentication,liferay,x509,Authentication,Liferay,X509,我正在使用LifeRay,需要某种特殊的身份验证:我的用户拥有x.509证书,这些证书由Apache Web服务器验证。在成功验证之后,用户被重定向到Tomcat,并在那里使用LifeRay 现在,我想执行以下操作:以编程方式获取用户证书的主题DN,并登录连接到此DN的LifeRay用户 到目前为止,我有以下几点: 创建了一个钩子“login.events.pre”,我从证书中获取DN 在LifeRay DB中搜索具有此DN的用户(使用UserLocalServiceUtil.getUserB

我正在使用LifeRay,需要某种特殊的身份验证:我的用户拥有x.509证书,这些证书由Apache Web服务器验证。在成功验证之后,用户被重定向到Tomcat,并在那里使用LifeRay

现在,我想执行以下操作:以编程方式获取用户证书的主题DN,并登录连接到此DN的LifeRay用户

到目前为止,我有以下几点:

  • 创建了一个钩子“login.events.pre”,我从证书中获取DN
  • 在LifeRay DB中搜索具有此DN的用户(使用UserLocalServiceUtil.getUserByOpenId())
  • 使用UserLocalServiceUtil.authenticateByScreenName()对用户进行身份验证
我现在的问题是:这是做这件事的“最好的”/“最干净的方法”,还是我应该使用其他方法来查询LifeRay DB、验证用户等。例如,我可以为LifeRay创建一个Ext扩展,而不是一个钩子。此外,我还发现了一些类似“com.liferay.portlet.login.util.LoginUtil.login”或User User=PortalUtil.getUser(请求)的内容;获取一个用户


文件中有没有回答这些问题的地方?API没有那么全面…

您的方式似乎更干净。除非您没有其他方法,否则不建议使用EXT,因为这将是维护和部署负担。