[
https://issues.apache.org/jira/browse/ESME-214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ivanov updated ESME-214:
---------------------------------
Attachment: ESMELdap_ads.properties
server_ads.xml
> Add container-based authentication
> ----------------------------------
>
> Key: ESME-214
> URL: https://issues.apache.org/jira/browse/ESME-214
> Project: Enterprise Social Messaging Environment (ESME)
> Issue Type: New Feature
> Components: Server
> Affects Versions: 1.3
> Reporter: Dick Hirsch
> Fix For: 1.3
>
> Attachments: ESMELdap_ads.properties, cm_login.jsp,
> jetty-login.properties, pom.xml, server_ads.xml, server_plain.xml,
> tomcat-users.xml, web.xml
>
>
> There should be the option of using container-based autnetication.
> Here are some ideas from an old post in the mailing list:
> Been thinking a lot about container based authentication - primarily,
> because of my interest in the CAS integration which is necessary for
> an OFBiz integration (search for OFBizCasAuthenticationHandler.java
> class for details)
> Here a few thoughts.
> in J2EE, the way to get the user is via the following code:
> java.security.Principal principal = request.getUserPrincipal();
> if(principal != null) {
> String username = principal.getName();
> // usw. usf.
> }
> If we used the UserPwdAuthModule in UserAuth.scala as a basis, we
> could use the following code combined with the code above to get the
> user:
> user <- UserAuth.find(By(UserAuth.authKey, name),
> By(UserAuth.authType,
> moduleName)).flatMap(_.user.obj) or
> User.find(By(User.nickname, name))
> We could take use the S object in lift to get the request and then get
> the UserPrincipal. Probably with "S.request"
> The only I don't know is how to make this Container-based authmodule
> be the default that works without a UI that implicitly calls it.
> One idea is to remove the following lines from Boot.scala
> UserAuth.register(UserPwdAuthModule)
> UserAuth.register(OpenIDAuthModule)
> and replace them with
> UserAuth.register(ContaionerAuthModule)
> ---------------
> object ContainerAuthModule extends AuthModule {
> def moduleName: String = "upw"
> def performInit(): Unit = {
> LiftRules.dispatch.append {
> case Req("authentication" :: "login" :: Nil, _, PostRequest) =>
> val from = S.referer openOr "/"
> (for {
> java.security.Principal principal = S.Request.getUserPrincipal();
> if(principal != null) {
> String username = principal.getName();
> user <- UserAuth.find(By(UserAuth.authKey, username),
> By(UserAuth.authType,
> moduleName)).flatMap(_.user.obj) or
> User.find(By(User.nickname, username))
> userAuth <- UserAuth.find(By(UserAuth.user,
> username), By(UserAuth.authType, moduleName))
> }
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira