Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Authentication Provider : SecurityProvider service class name for XXXX is not specified in WL 12.1.3.0.0

I've just created an Authentication Provider for WebLogic Server Version 12.1.3.0.0, (The Authentication Provider adheres to the standard JAAS framework by structuring the authentication sequence on top of a number of configurable JAAS LoginModules. ) but when I start Wl I have this error:

Here the steps:

1) set ENV

%WL_HOME%/server/bin/setWLSEnv.cmd

2) generate the MBean and stubs:

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

3) package the authentication provider and login module with the generated stub and MBI files.

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

4) add -DUseSunHttpHandler=true to 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

Here my file MyAuthentication.xml (A simple MDF (MyAuthentication.xml) for an authentication provider). WebLogic's provider architecture is MBean-based

<?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>

and here the 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>t=tnt-ws2-authenticationType@http://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>t=string@http://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>t=string@http://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>t=string@http://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>e=tnt-ws2-authentication@http://xmlns.oracle.com/weblogic/security/extension</ns:xmlcomponent>
      <ns:javatype>eu.cec.sanco.tracesnt.ws.security.iap.TntWS2AuthenticationMBeanImpl</ns:javatype>
      <ns:type-of-element>t=tnt-ws2-authenticationType@http://xmlns.oracle.com/weblogic/security/extension</ns:type-of-element>
    </ns:binding-type>
  </ns:bindings>
  <ns:xml-to-pojo>
    <ns:mapping>
      <ns:xmlcomponent>t=tnt-ws2-authenticationType@http://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>e=tnt-ws2-authentication@http://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>t=tnt-ws2-authenticationType@http://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>e=tnt-ws2-authentication@http://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>

this is the structure os the project

enter image description here

like image 656
Nunyet de Can Calçada Avatar asked Nov 17 '15 13:11

Nunyet de Can Calçada


2 Answers

There can be many reasons, but I guess it is a package problem. Please, check if your resulting provider .jar contains a file called META-INF/binding-file.xml and check if this file has bindind node as follows:

<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 must be defined in build.xml into WebLogicMBeanMAker as -target parameter.

Tell me also if your resulting provider .jar looks like this

.
├── 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

If your are missing something I would like to know what is that.

Edit

I edit my answer in response to your comment, and answer edition.

I can see in your META-INF\binding-file.xml there is no custom namespace in <ns:xmlcomponent> node.

To specify targetNamespace in the WebLogicMBeanMaker command, you can change your command as follows (It is shown such way for clarity):

java 
  -DMJF=C:\...\...\WLAuthenticationProvider\jar\WSAuthentication.jar \
  -Dfiles=C:\...\...\WLAuthenticationProvider\src \ 
  -DtargetNameSpace= your.own.namespace \
  weblogic.management.commo.WebLogicMBeanMaker
like image 174
malaguna Avatar answered Sep 28 '22 08:09

malaguna


If you want to be also compatible with WebLogic 12.2.x, you need to define "@default" Javadoc annotation for default values, and "@encrypted" Javadoc annotations for encrypted values (passwords, ...)

public interface LdapAuthenticatorMBean extends StandardInterface, DescriptorBean, AuthenticatorMBean {

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

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

and also define setter and getters methods for each property (previously it was not strictly required).

like image 27
metatechbe Avatar answered Sep 28 '22 07:09

metatechbe