2015-11-17 21 views
5

Ho appena creato un provider di autenticazione per WebLogic Server versione 12.1.3.0.0, (Il provider di autenticazione è conforme al framework JAAS standard . strutturando la sequenza di autenticazione sopra di un certo numero di configurabili LoginModules JAA), ma quando avvio Wl ho questo errore:Provider di autenticazione: SecurityProvider nome classe di servizio per XXXX non specificato in WL 12.1.3.0.0

Qui i passaggi:

1) impostare ENV

%WL_HOME%/server/bin/setWLSEnv.cmd 

2) genera l'MBean e gli stub:

java -cp %WL_HOME%/server/lib/* -verbose -DcreateStubs="true" \ 
weblogic.management.commo.WebLogicMBeanMaker -MDF WSAuthentication.xml \ 
-files C:\Development\Workspaces\Eclipse\WLAuthenticationProvider\src 

3) pacchetto del provider di autenticazione e modulo di login con i file stub e MBI generati.

java -DMJF=C:\Development\Workspaces\Eclipse\WLAuthenticationProvider\jar\WSAuthentication.jar \ 
-Dfiles=C:\Development\Workspaces\Eclipse\WLAuthenticationProvider\src weblogic.management.commo.WebLogicMBeanMaker 

4) aggiungere -DUseSunHttpHandler = true per startWebLogic.cmd

weblogic.security.service.SecurityServiceRuntimeException: [Security:090877]Service Common JAASAuthenticationService unavailable, see exception text: com.bea.common.engine.ServiceInitializationException: com.bea.common.engine.SecurityServiceRuntimeException: [Security:097533]SecurityProvider service class name for MyAuthentication is not specified. 
     at weblogic.security.service.PrincipalAuthenticator.initialize(PrincipalAuthenticator.java:155) 
     at weblogic.security.service.PrincipalAuthenticator.<init>(PrincipalAuthenticator.java:315) 
     at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.doATN(CommonSecurityServiceManagerDelegateImpl.java:731) 
     at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postInitializeRealm(CommonSecurityServiceManagerDelegateImpl.java:515) 
     at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postLoadRealm(CommonSecurityServiceManagerDelegateImpl.java:861) 
     at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postInitializeRealms(CommonSecurityServiceManagerDelegateImpl.java:927) 
     at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postInitialize(CommonSecurityServiceManagerDelegateImpl.java:1109) 
     at weblogic.security.service.SecurityServiceManager.postInitialize(SecurityServiceManager.java:943) 
     at weblogic.security.SecurityService.start(SecurityService.java:159) 
     at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:78) 
     at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1017) 
     at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:388) 
     at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:430) 
     at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456) 
     at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) 
     at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) 
     at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2488) 
     at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606) 
     at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) 
     at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) 
     at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) 
     at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) 
     at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456) 
     at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) 
     at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) 
     at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2488) 
     at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606) 
     at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) 
     at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) 
     at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) 
     at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) 
     at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456) 
     at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) 
     at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) 
     at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2488) 
     at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) 
     at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87) 
     at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1162) 
     at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1147) 
     at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:553) 
     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) 
     at weblogic.work.ExecuteThread.run(ExecuteThread.java:263) 
Caused by: com.bea.common.engine.ServiceInitializationException: com.bea.common.engine.SecurityServiceRuntimeException: [Security:097533]SecurityProvider service class name for TntWS2Authentication is not specified. 
     at com.bea.common.engine.internal.ServiceEngineImpl.findOrStartService(ServiceEngineImpl.java:365) 
     at com.bea.common.engine.internal.ServiceEngineImpl.findOrStartService(ServiceEngineImpl.java:315) 
     at com.bea.common.engine.internal.ServiceEngineImpl.lookupService(ServiceEngineImpl.java:257) 
     at com.bea.common.engine.internal.ServicesImpl.getService(ServicesImpl.java:72) 
     at weblogic.security.service.CSSWLSDelegateImpl.getService(CSSWLSDelegateImpl.java:155) 
     at com.bea.security.css.CSS.getService(CSS.java:123) 
     at weblogic.security.service.PrincipalAuthenticator.initialize(PrincipalAuthenticator.java:132) 
     ... 46 more 
Caused by: com.bea.common.engine.SecurityServiceRuntimeException: [Security:097533]SecurityProvider service class name for MyAuthentication is not specified. 
     at com.bea.common.security.internal.legacy.service.SecurityProviderImpl.init(SecurityProviderImpl.java:42) 
     at com.bea.common.engine.internal.ServiceEngineImpl.findOrStartService(ServiceEngineImpl.java:363) 
     ... 52 more 

Qui il mio MyAuthentication.xml file (un semplice MDF (MyAuthentication.xml) per un provider di autenticazione). architettura fornitore di WebLogic è MBean-basa

<?xml version="1.0" ?> 
<!DOCTYPE MBeanType SYSTEM "commo.dtd"> 
<MbeanType 
     Name = "MyAuthentication" 
     DisplayName = "MyAuthentication" 
     Package = "fr.telecom.devices.ws.security.iap" 
     Extends = "weblogic.management.security.authentication.Authenticator" 
     PersistPolicy = "OnUpdate" > 

<MbeanAttribute 
     Name = "ProviderClassName" 
     Type = "java.lang.String" 
     Writeable = "false" 
     Default ="&quot;fr.telecom.devices.ws.security.iap.MyAuthenticationProviderImpl&quot;" 
     /> 

    <MbeanAttribute Name = "Description" Type = "java.lang.String" 
     Writeable = "false" 
     Default = "&quot;Traces Authentication Provider&quot;" 
     /> 

    <MBeanAttribute Name = "Version" Type = "java.lang.String" 
     Writeable = "false" Default = "&quot;1.0&quot;" 
     /> 

</MbeanType> 

e qui il file META-INF \ binding-file.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<ns:binding-config xmlns:ns="http://www.bea.com/ns/staxb/binding-config/90"> 
    <ns:bindings> 
    <ns:binding-type xsi:type="ns:by-name-bean" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
     <ns:qname-property> 
     <ns:xmlcomponent>[email protected]://www.w3.org/2001/XMLSchema</ns:xmlcomponent> 
     <ns:javatype>java.lang.String</ns:javatype> 
     <ns:getter> 
      <ns:method-name>getName</ns:method-name> 
     </ns:getter> 
     <ns:setter> 
      <ns:method-name>setName</ns:method-name> 
      <ns:param-type>java.lang.String</ns:param-type> 
     </ns:setter> 
     <ns:issetter> 
      <ns:method-name>isNameSet</ns:method-name> 
     </ns:issetter> 
     <ns:qname xmlns:sec="http://xmlns.oracle.com/weblogic/security">sec:name</ns:qname> 
     <ns:nillable>true</ns:nillable> 
     </ns:qname-property> 
     <ns:qname-property> 
     <ns:xmlcomponent>[email protected]://www.w3.org/2001/XMLSchema</ns:xmlcomponent> 
     <ns:javatype>java.lang.String</ns:javatype> 
     <ns:getter> 
      <ns:method-name>getCompatibilityObjectName</ns:method-name> 
     </ns:getter> 
     <ns:setter> 
      <ns:method-name>setCompatibilityObjectName</ns:method-name> 
      <ns:param-type>java.lang.String</ns:param-type> 
     </ns:setter> 
     <ns:issetter> 
      <ns:method-name>isCompatibilityObjectNameSet</ns:method-name> 
     </ns:issetter> 
     <ns:qname xmlns:sec="http://xmlns.oracle.com/weblogic/security">sec:compatibility-object-name</ns:qname> 
     <ns:nillable>true</ns:nillable> 
     </ns:qname-property> 
     <ns:qname-property> 
     <ns:xmlcomponent>[email protected]://www.w3.org/2001/XMLSchema</ns:xmlcomponent> 
     <ns:javatype>java.lang.String</ns:javatype> 
     <ns:getter> 
      <ns:method-name>getControlFlag</ns:method-name> 
     </ns:getter> 
     <ns:setter> 
      <ns:method-name>setControlFlag</ns:method-name> 
      <ns:param-type>java.lang.String</ns:param-type> 
     </ns:setter> 
     <ns:issetter> 
      <ns:method-name>isControlFlagSet</ns:method-name> 
     </ns:issetter> 
     <ns:qname xmlns:sec="http://xmlns.oracle.com/weblogic/security">sec:control-flag</ns:qname> 
     <ns:nillable>true</ns:nillable> 
     </ns:qname-property> 
    </ns:binding-type> 
    <ns:binding-type xsi:type="ns:simple-document-binding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
     <ns:type-of-element>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:type-of-element> 
    </ns:binding-type> 
    </ns:bindings> 
    <ns:xml-to-pojo> 
    <ns:mapping> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
    </ns:mapping> 
    <ns:mapping> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
    </ns:mapping> 
    </ns:xml-to-pojo> 
    <ns:xml-to-xmlobj/> 
    <ns:java-to-xml> 
    <ns:mapping> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
    </ns:mapping> 
    </ns:java-to-xml> 
    <ns:java-to-element> 
    <ns:mapping> 
     <ns:xmlcomponent>[email protected]://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent> 
     <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype> 
    </ns:mapping> 
    </ns:java-to-element> 
</ns:binding-config> 

questa è la struttura os progetto

enter image description here

risposta

1

Ci possono essere molte ragioni, ma credo che sia un problema di pacchetto. Vi preghiamo di controllare se il vostro provider risultante .jar contiene un file chiamato META-INF/binding-file.xml e verificare se questo file ha bindind nodo come segue:

<ns:binding-type xsi:type="ns:by-name-bean" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <ns:xmlcomponent>[email protected]</ns:xmlcomponent> 
    <ns:javatype>fr.telecom.devices.ws.security.iap.MyAuthenticationMBeanImpl</ns:javatype> 

your.namespace devono essere definite in build.xml in WebLogicMBeanMAker come -target parametro.

Dimmi anche se il provider risultante .jar assomiglia a questo

. 
├── commo.dtd 
├── MyAuthentication-Mbean.xml 
├── fr 
│   └── telecom 
│    └── devices 
│     └── ws 
│      └── security 
│       └── iap 
│        ├── impl 
│        │   ├── MyAuthenticationProviderImpl.class 
│        │   ├── ... 
│        │ └── ... 
│        └── mbeans 
│         ├── MyAuthenticationImpl.class 
│         ├── MyAuthenticationMBean.class 
│         ├── MyAuthenticationImplBeanInfo.class 
│         ├── MyAuthenticationMBeanImpl.class 
│         ├── MyAuthentication$Helper.class 
│         └── MyAuthentication$SchemaHelper2.class 
├── META-INF 
│   ├── beaninfofactory.txt 
│   ├── binding-file.ser 
│   ├── binding-file.xml 
│   ├── binding-mapping-file.ser 
│   ├── MANIFEST.MF 
│   └── schemas 
│    └── schema-0.xsd 
├── schemacom_bea_xml 
│   ├── element 
│   │   └── your_2Enamespace 
│   │    └── my_2Dauthentication_2Dap.xsb 
│   ├── namespace 
│   │   └── your_2Enamespace 
│   │    └── xmlns.xsb 
│   ├── system 
│   │   └── sED25F267F5545F2AED6F8F098FF3212F 
│   │    ├── myauthentication94aadoctype.xsb 
│   │    ├── myauthentication.xsb 
│   │    ├── myauthentication7480type.xsb 
│   │    ├── index.xsb 
│   │    └── TypeSystemHolder.class 
│   └── type 
│    └── es_2Esescam_2Eprovider 
│     └── my_2Dauthentication2DapType.xsb 
└── weblogic 
     ├── descriptor 
     │   └── SettableBean.class 
     └── management 
      └── security 
       └── LDAP_DB_WLS12C_PROVIDER18595502884856BeanInfoFactory.class 

Se il vostro sono mancanti qualcosa che mi piacerebbe sapere che cosa è che.

Modifica

posso modificare la mia risposta in risposta al tuo commento, e la risposta edizione.

Posso vedere nel tuo META-INF\binding-file.xml non esiste uno spazio dei nomi personalizzato nel nodo <ns:xmlcomponent>.

Per specificare targetNamespace nel comando WebLogicMBeanMaker, è possibile modificare il vostro comando come segue (E 'dimostrato modo per chiarezza):

java 
    -DMJF=C:\...\...\WLAuthenticationProvider\jar\WSAuthentication.jar \ 
    -Dfiles=C:\...\...\WLAuthenticationProvider\src \ 
    -DtargetNameSpace= your.own.namespace \ 
    weblogic.management.commo.WebLogicMBeanMaker 
+0

Non sto utilizzando il file WebLogicMBeanMAker, quindi dove posso impostare gli spazi dei nomi? –

1

Se si vuole essere anche compatibile con WebLogic 12.2.x, è necessario definire "@default" annotazioni Javadoc per i valori di default, e "@encrypted" annotazioni Javadoc per i valori criptati (password, ...)

public interface LdapAuthenticatorMBean extends StandardInterface, DescriptorBean, AuthenticatorMBean { 

/** 
* @default "com.mycompany.LdapAuthenticatorProviderImpl" 
*/ 
public String getProviderClassName(); 

/** 
* @no-default 
* @encrypted 
*/ 
public String getTechPass(); 

e anche definire metodi setter e getter per ogni proprietà (in precedenza non era strettamente necessario).

2

Ho anche ricevuto questo errore quando ho intenzione di implementare un provider di autenticazione personalizzato. Non ci sono tutorial molto buoni per creare provider di autenticazione personalizzati. Ho provato con il Maven e funziona. Ho trovato questo tutorial di lavoro in GitHub. Example Code can be clone here

Esiste un ebook che è possibile utilizzare per avere un'idea completa della creazione del provider di autenticazione personalizzata weblogic. Ebook link

Potrebbe essere necessario modificare il file com.bea.core.common.security.api_1.1.0.0_6-2-0-0.jar a questo com.bea.core.common.security.api_1. 1.0.0_6-2-0-0.jar