2016-02-12 3 views
7

मैं एक @PicketLinked वर्ग कि BaseAuthenticator फैली उपयोग करने के लिए कोशिश कर रहा हूँ।@PicketLink एनोटेट वर्ग identity.login में नहीं किया जाता है()

मेरा सेट-अप वाइल्डफ्लाई 9.0.2.इनल पर एक कान प्रोजेक्ट है।

मैं अपने jboss तैनाती-structure.xml में इस का उपयोग कर रहा

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
<deployment> 
    <dependencies> 
      <!-- This will enable PicketLink Authentication/Authorization and IDM dependencies to your deployment. --> 
     <module name="org.picketlink.core.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.core" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm" meta-inf="import" annotations="true"/>  
     <module name="org.picketlink.common" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.schema" meta-inf="import" annotations="true"/> 
    </dependencies> 
</deployment> 
<sub-deployment name="prestiz-web.war"> 
    <dependencies> 
      <!-- This will enable PicketLink Authentication/Authorization and IDM dependencies to your deployment. --> 
     <module name="org.picketlink.core.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.core" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm" meta-inf="import" annotations="true"/>  
     <module name="org.picketlink.common" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.schema" meta-inf="import" annotations="true"/> 
    </dependencies> 
</sub-deployment> 
<sub-deployment name="prestiz-ejb.jar"> 
    <dependencies> 
      <!-- This will enable PicketLink Authentication/Authorization and IDM dependencies to your deployment. --> 
     <module name="org.picketlink.core.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.core" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.api" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm" meta-inf="import" annotations="true"/>  
     <module name="org.picketlink.common" meta-inf="import" annotations="true"/> 
     <module name="org.picketlink.idm.schema" meta-inf="import" annotations="true"/> 
    </dependencies> 
</sub-deployment> 
</jboss-deployment-structure> 

मेरे BaseAuthenticator वर्ग मेरी ejb.jar

@RequestScoped 
@PicketLink 
public class PicketlinkAuthenticator extends BaseAuthenticator 

मेरे LoginController निम्नलिखित के रूप में कॉन्फ़िगर किया गया है भीतर निम्नलिखित के रूप में घोषित किया जाता है :

@Path("/login") 
public class LoginController { 
    @Inject 
    private Identity identity; 

    @Inject 
    private DefaultLoginCredentials credentials; 

    @GET 
    @Path("/dologin/{username}/{password}") 
    @Produces(MediaType.TEXT_PLAIN) 
    @Transactional(TxType.REQUIRED) 
    public String doLogin(@PathParam("username") String username, @PathParam("password") String password){ 
     credentials.setUserId(username); 
     credentials.setPassword(password); 
     AuthenticationResult authResult=identity.login(); 
     if(authResult.equals(AuthenticationResult.SUCCESS)){ 
      return "success"; 
     }else{ 
      return "failed"; 
     } 
    } 

पहचान के बाद .login() कहा जाता है कि मैं इसे लॉग में देखता हूं:

11:49:09,630 INFO [org.picketlink.idm] (default task-2) PLIDM001000: Bootstrapping PicketLink IDM Partition Manager 
11:49:09,667 INFO [org.picketlink.idm.identity.store] (default task-2) PLIDM001001: Initializing Identity Store [class org.picketlink.idm.file.internal.FileIdentityStore] 
11:49:09,679 WARN [org.picketlink.idm.identity.store.file] (default task-2) PLIDM001101: Working directory [C:\Users\bgadeyne\AppData\Local\Temp\pl-idm] is marked to be always created. All your existing data will be lost. 
11:49:09,688 INFO [org.picketlink.idm.identity.store.file] (default task-2) PLIDM001100: Using working directory [C:\Users\bgadeyne\AppData\Local\Temp\pl-idm]. 

मेरे प्रमाणीकरणकर्ता की प्रमाणीकृत विधि में कुछ लॉगिंग भी है लेकिन यह दिखाया नहीं गया है।

मुझे यहां क्या याद आ रही है?

उत्तर

0

समाधान है कि आप एक AuthenticatorSelector जो आपके प्रमाणक का चयन करेंगे की आवश्यकता है।

import javax.enterprise.context.RequestScoped; 
import javax.enterprise.inject.Instance; 
import javax.enterprise.inject.Produces; 
import javax.inject.Inject; 
import javax.inject.Named; 

import lombok.Setter; 
import org.picketlink.annotations.PicketLink; 
import org.picketlink.authentication.Authenticator; 
import org.picketlink.authentication.internal.IdmAuthenticator; 



@RequestScoped 
@Named 
public class AuthenticatorSelector { 
    @Inject private Instance<SingleSignOnAuthenticator> ssoAuthenticator; 
    @Inject private Instance<IdmAuthenticator> idmAuthenticator; 
    @Inject private Instance<TokenAuthenticator> tokenAuthenticator; 

    @Setter private boolean singleSignOn = false; 
    @Setter private boolean tokenAuth = false; 

    public boolean getSingleSignOn() {return singleSignOn;} 

    @Produces 
    @PicketLink 
    public Authenticator selectAuthenticator() { 
     if (singleSignOn) { 
      return ssoAuthenticator.get(); 
     } else if (tokenAuth) { 
      return tokenAuthenticator.get(); 
     } else { 
      return idmAuthenticator.get(); 
     } 
    } 
: यह आपको एकाधिक authenticators की अनुमति देता है
संबंधित मुद्दे

 संबंधित मुद्दे