<?xml version="1.0" ?>
<!DOCTYPE MBeanType SYSTEM "commo.dtd">

<!-- MBean Definition File (MDF) for the Manageable Sample Authenticator -->

<!-- Declare your mbean.

     Since it is for an authenticator, it must extend the
     weblogic.management.security.authentication.Authenticator mbean.

     It also implements the standard management mixin mbean interfaces
     for user and group editing.  This gives the provider "free"
     console support - that is, the provider doesn't have to write
     its own console pages for user and group editing.

     These mixin interfaces are fine grained to not force the provider
     to support full group/user editing/reading.  This provider implements
     almost all of these mixin interfaces.

     Here is a summary of the methods and inheritance hierarchy of
     the management mixin mbean interfaces that this mbean implements:

       interface UserEditor has
         method createUser
         method setUserDescription

         interface UserReader has
           method listUsers
           method userExists
           method getUserDescription

           interface NameLister has
             method getCurrentName

             interface Lister has
               method haveCurrent
               method advance
               method close

         interface UserPasswordEditor has
           method changeUserPassword
           method resetUserPassword

         interface UserRemover has
           method removeUser

       interface GroupEditor has
         method createGroup
         method setGroupDescription
         method addMemberToGroup
         method removeMemberFromGroup

         interface GroupReader has
           method listGroups
           method groupExists
           method isMember
           method getGroupDescription

           interface NameLister (see above)

         interface GroupRemover has
           method removeGroup

       interface MemberGroupLister has
         method listMemberGroups

         interface GroupReader (see above)

     All of these methods are implemented in this provider's
     ManageableSampleAuthenticatorImpl class (that is, it's
     mbean implementation).

     Note that this provider does not implement the
     GroupMemberLister interface.  This means that this
     provider supports listing the groups that contain a
     member, but doesn't support listing the members of a group.

     The Name and DisplayName must be the same.
     They specify the name that will appear on the
     console for this provider.

     Set the PeristPolicy to "OnUpdate" so that if an attribute
     value is changed, the new value is written to disk immediately.
     See the "Developing Security Services" manual for more info.

     Note that since this is an xml document, you can't use double
     quotes directly.  Instead you need to use &quot;

     Note that setting "Writeable" to "false" on an attribute
     makes the attribute read-only.  The default is read-write.
-->
<MBeanType
 Name          = "KaajeeManageableAuthenticator"
 DisplayName   = "KaajeeManageableAuthenticator"
 Package       = "gov.va.med.authentication.kernel.sspi.authentication.manageable"
 Extends       = "weblogic.management.security.authentication.Authenticator"
 Implements    = "weblogic.management.security.authentication.UserEditor,
                  weblogic.management.security.authentication.GroupEditor,
                  weblogic.management.security.authentication.MemberGroupLister"
 PersistPolicy = "OnUpdate"
>

 <!-- You must set the value of the ProviderClassName attribute
      (inherited from the weblogic.management.security.Provider mbean)
      to the name of the java class you wrote that implements the
      weblogic.security.spi.AuthenticationProvider interface.

      You can think of the provider's mbean as the factory
      for your provider's runtime implementation.
 -->
 <MBeanAttribute
  Name          = "ProviderClassName"
  Type          = "java.lang.String"
  Writeable     = "false"
  Preprocessor = "weblogic.management.configuration.LegalHelper.checkClassName(value)"
  Default       = "&quot;gov.va.med.authentication.kernel.sspi.authentication.manageable.KaajeeManageableAuthenticationProviderImpl&quot;"
 />

 <!-- You must set the value of the Description attribute
      (inherited from the weblogic.management.security.Provider mbean)
      to a brief description of your provider.
      It is displayed in the console.
 -->
 <MBeanAttribute
  Name          = "Description"
  Type          = "java.lang.String"
  Writeable     = "false"
  Default       = "&quot;WebLogic Kaajee Manageable Authentication Provider&quot;"
 />

 <!-- You must set the value of the Version attribute
      (inherited from the weblogic.management.security.Provider mbean)
      to your provider's version.  There is no required format.
 -->
 <MBeanAttribute
  Name          = "Version"
  Type          = "java.lang.String"
  Writeable     = "false"
  Default       = "&quot;1.1.0.002&quot;"
 />

 <!-- Add any custom attributes for your provider here.

      The manageable sample authenticator does not have
      any custom attributes.

      Note: custom attributes do not appear in the
      console in WLS 7.0.  Use the admin command line tool
      (java weblogic.Admin) to view and set their values.

      Refer to the "Developing Security Services" manual
      for more info on defining custom attributes.
 -->

</MBeanType>
