Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    problema login web-app con JAAS e JDBC

    Salve a tutti mi trovo ad implementare una web-app su un server glassfish.
    Vorrei chiedervi se vi è noto il perchè se uso un realmFile tutto funziona come drovebbe
    se invece uso un JDBC realm mi dice:
    Web Login Failed: com.sun.enterprise.security.auth.login.common.Logi nException: Login failed: Nessun LoginModules configurato per nomeRealm

    Grazie a tutti anticipatamente.

  2. #2
    Inanziutto sarebbe bene specificare che versione di glassfish stai utilizzando.
    Seconda cosa senza vedere un stralcio di configurazione è un pò impossibile darti consigli.
    Comunque elenco le principali cause per il quale l'autenticazione non funziona:

    Hai configurato il jdbcRealm?
    Hai verificato che il pool di connessioni definito nel realm funzioni correttamente ?
    Hai provato ad abilitare i log verbosi della sicurezza per verificare cos'è che va storto ?

  3. #3
    allora la situazione che mi ritrovo è questa:

    la versione di glassfish che utilizzo è la : GlassFish Server Open Source Edition 3.1.2 (build 23)
    ho configurato il realm JDBC utilizzando un datasuorce che già utilizzavo per cui sono certo del funzionamento delle connessioni JDBC.

    ecco i file di configurazione:
    web.xml
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <servlet>
            <servlet-name>LogoutServlet</servlet-name>
            <servlet-class>security.LogoutServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LogoutServlet</servlet-name>
            <url-pattern>/LogoutServlet</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>
                index.jsp
            </welcome-file>
        </welcome-file-list>
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Secure Pages</web-resource-name>
                <url-pattern>/restricted/*</url-pattern>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
            </web-resource-collection>
            <auth-constraint>
                <role-name>USERS</role-name>
                <role-name>EmployeeGroup</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>developinjava</realm-name>
            <form-login-config>
                <form-login-page>/login.jsp</form-login-page>
                <form-error-page>/loginerror.jsp</form-error-page>
            </form-login-config>
        </login-config>
        <security-role>
            <description/>
            <role-name>EmployeeGroup</role-name>
        </security-role>
        <security-role>
            <description/>
            <role-name>USERS</role-name>
        </security-role>
    </web-app>
    sun-web.xml
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
    <sun-web-app error-url="">
      <context-root>/SecurityTest</context-root>
      <security-role-mapping>
        <role-name>EmployeeGroup</role-name>
        <group-name>EmployeeGroup</group-name>
      </security-role-mapping>
      <class-loader delegate="true"/>
      <jsp-config>
        <property name="classdebuginfo" value="true">
          <description>Enable debug info compilation in the generated servlet class</description>
        </property>
        <property name="mappedfile" value="true">
          <description>Maintain a one-to-one correspondence between static content and the generated servlet class' java code</description>
        </property>
      </jsp-config>
      <security-role-mapping>
        <role-name>USERS</role-name>
        <group-name>USERS</group-name>
      </security-role-mapping>
    </sun-web-app>
    glassfish-web.wml

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
    <glassfish-web-app error-url="">
      <security-role-mapping>
        <role-name>EmployeeGroup</role-name>
        <group-name>EmployeeGroup</group-name>
        <group-name>USERS</group-name>
      </security-role-mapping>
      <security-role-mapping>
        <role-name>USERS</role-name>
        <group-name>USERS</group-name>
        <group-name>EmployeeGroup</group-name>
      </security-role-mapping>
      <class-loader delegate="true"/>
      <jsp-config>
        <property name="keepgenerated" value="true">
          <description>Keep a copy of the generated servlet class' java code.</description>
        </property>
      </jsp-config>
    </glassfish-web-app>
    per ciò che riguarda i log l'unica cosa di anomalo che mi viene segnalata durante il deploy è questa:
    codice:
    Avvertenza: DPL8027: Ignore WEB-INF/sun-web.xml in archive /C:/Users/Melo90/Downloads/SecurityTest/build/web/, as GlassFish counterpart runtime xml WEB-INF/glassfish-web.xml is present in the same archive.
    durante l'esecuzione se vado ad effettuare il login mi dà l'eccezione
    codice:
    Avvertenza: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Nessun LoginModules configurato per developinjava

  4. #4
    Allora per quanto riguarda l'errore che ti viene fuori è perchè hai sia un file sun-web.xml (vecchio file di configurazione di glassfish) che il glassfish-web.xml, in poche parole ti dice che ignorerà il sun-web.xml e utilizzerà il glassfish-web.xlm, quindi puoi anche rimuovere tale file.
    Per quanto riguarda la configurazione dell'applicazione mi sembra corretta (non ci ho perso troppo tempo). Quello che però manca è la configurazione del realm di glassfish.
    Ti posto un esempio di jdbc realm configurato:
    codice:
     <auth-realm name="jestin-realm" classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm">
              <property name="digest-algorithm" value="SHA-256"></property>
              <property name="user-name-column" value="USERNAME"></property>
              <property name="password-column" value="PASSWORD"></property>
              <property name="group-name-column" value="ROLE"></property>
              <property name="group-table" value="ROLES_USERS"></property>
              <property name="user-table" value="USERS"></property>
              <property name="datasource-jndi" value="jdbc/jestin-security"></property>
              <property name="jaas-context" value="jdbcRealm"></property>
              <property name="charset" value="UTF-8"></property>
              <property name="encoding" value="Base64"></property>
            </auth-realm>

  5. #5
    scusa ma la configurazione del realm dove va messa??
    Io ho creato il realm tramite il pannello di amministrazione di glassfish

  6. #6
    anche io l'ho creata da li. Quello che devi sapere e che tutto quello che configuri dalla console va a finire dentro il file deploy.xml del dominio che hai avviato. Questo file si trova nella cartella : glassfish3\glassfish\domains\<nome dominio>\config.

  7. #7
    ho risolto il problema, era necessario inserire nel campo Contesto JASS esattamente jdbcRealm in modo tale da indicare il login module da usare.
    Tuttavia ancora non è funzionante la mia app in quanto si presenta un'ulteriore eccezione:
    codice:
     
    Grave: SEC1112: Cannot validate user [emp2] for JDBC realm.
    Avvertenza: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception

  8. #8
    ciao mefelofo90,
    L'errore che ti viene stampato significa che il server non è riuscito ad effettuare il login.
    Questo può avvenire per diverse cause la più probabile è che la password immessa non è corretta.
    Controlla quindi che la password memorizzata sul database è codificata con lo stesso encoding del server e che è tale password sia stata criptata con lo stesso algoritmo di codificazione impostato nel realm.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.