2010-08-18 12 views
0

J'essaye de faire fonctionner JAAS avec OC4J.
JAAS a déjà travaillé avec JBoss. Utiliser JAAS avec JBoss est simple (pour moi).Configuration de JAAS sur OC4J

Dans jboss-web.xml de l'application, mettez ceci:

<security-domain>java:/jaas/myApp</security-domain> 

Et mettre ce qui suit dans login-config.xml JBoss:

<application-policy name = "myApp"> 
    <authentication> 
     <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required"> 
     <module-option name="dsJndiName">java:/jdbc/myDS</module-option> 
     <module-option name="principalsQuery">SELECT password FROM users WHERE username=?</module-option> 
     <module-option name="rolesQuery">select name, 'Roles' from groups ...</module-option> 
     </login-module> 
    </authentication> 
</application-policy> 

Alors, quel est l'équivalent en OC4J? Ai-je vraiment besoin de traiter avec Realms, UserManagers, etc, ou puis-je simplement ajouter du XML dans le fichier system-jazn-data.xml? Quelle est la solution la plus simple?

Répondre

1

Ok, a fait plus de devoirs et a découvert que c'est proche. Vous devez ajouter à OC4J_HOME $/j2ee/yourinstance/config/system-jazn-data.xml

<application> 
    <name>myApp</name> 
    <login-modules> 
    <login-module> 
     <class>com.company.project.JDBCLoginModule</class> 
     <control-flag>required</control-flag> 
     <options> 
     <option> 
      <name>principalsQuery</name> 
      <value>SELECT password FROM users WHERE username=?</value> 
     </option> 
     <option> 
      <name>dsJndiName</name> 
      <value>jdbc/myDS</value> 
     </option> 
     </options> 
    </login-module> 
    </login-modules> 
</application> 

Vous devez alors créer la classe JDBCLoginModule, qui met en œuvre javax.security.auth.spi.LoginModule. Peut-être OC4J a déjà cette classe, mais je ne pouvais pas le trouver. Incluez cette classe dans votre fichier EAR/WAR/JAR qui est déployé sur OC4J.

Toujours en train de travailler sur l'aspect groupes/rôles de la connexion.

MISE À JOUR: Mieux encore, trouvé les pages Web officielles:

1

a) En fait, la meilleure façon est de mettre cela sur le orion-applcation et il sera installé automatiquement chaque fois que l'application est déployée: Il ressemblera à quelque chose comme

<jazn-loginconfig> 
    <application> 
    <name>ApplicationName</name> 
    <login-modules> 
     <login-module> 
     <class>mycomapany.idm.loginmodules.BlahBlahLoginModule</class> 
     <control-flag>required</control-flag> 
     <options> 
      <option> 
      <name>debug</name> 
      <value>true</value> 
      </option> 
     </options> 
     </login-module> 
    </login-modules> 
    </application> 
</jazn-loginconfig> 

b) Vous devriez vérifier JAZN qui est l'implémentation/remplacement Oracle pour JAAS. Il est plus robuste et flexible (bien que plus complexe). Maintenant, si vous vous connectez à la logique est aussi simple que vous avez posté ci-dessus, je pense que ce sera suffisant.