¿Cómo autenticar a los usuarios por su rol declarativo?

¿Cómo se puede configurar Seam para usar diferentes restricciones de seguridad para diferentes colecciones de recursos web?

En web.xmlincluí secciones como

<security-constraint>
    <web-resource-collection>
        <web-resource-name>AdminPages</web-resource-name>
        <url-pattern>/secure/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <role-name>admin</role-name>
</security-role>

Si omito la configuración anterior (web.xml). El usuario se autentica (solo contraseña) usando JAAS. Preferiría no escribir código para Authenticatin, realmente solo necesito verificar que el usuario tenga el rol requerido (admin).

En Seam esto no funciona como se esperaba. Recibo HTTP-Errorcode 403 al intentar acceder a las páginas en/secure/*

Configuré en components.xmlEsto funciona cuando web.xml no se cambia.

<security:identity jaas-config-name="admins" />

Y jboss-web.xml

<jboss-web>
    <security-domain>java:/jaas/admins</security-domain>
</jboss-web>

La pregunta es dónde configuro el rol.

Respuesta 1

Debe configurar un nuevo dominio de seguridad en JBoss.

Por ejemplo:

<policy>
    <application-policy name="testUsersRoles">
        <authentication>
            <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
                          flag="required">
                <module-option name="usersProperties">usersb64.properties</module-option>
                <module-option name="hashAlgorithm">MD5</module-option>
                <module-option name="hashEncoding">base64</module-option>
                <module-option name="unauthenticatedIdentity">nobody</module-option>
            </login-module>
        </authentication>
    </application-policy>
</policy>

(en el archivo conf / login-config.xml de su instancia de JBoss).

Tienes más información aquí: Seguridad en JBoss

ACTUALIZAR:

Acerca de la parte de su pregunta "usar diferentes restricciones de seguridad para diferentes colecciones de recursos web", puede configurarla agregando una "restricción de seguridad" diferente para cada grupo de recursos a controlar:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>AdminPages</web-resource-name>
        <url-pattern>/secure/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>


<security-constraint>
    <web-resource-collection>
        <web-resource-name>CommonUserPages</web-resource-name>
        <url-pattern>/common/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
        <role-name>commonUser</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <role-name>admin</role-name>
    <role-name>commonUser</role-name>
</security-role>

Tenga en cuenta que ambos roles serán extraídos por el LoginModule asociado en el momento del inicio de sesión. Entonces, cuando su LoginModule autentica a un usuario, recupera el conjunto de roles a los que pertenece este usuario.

Respuesta: 2

Quiero ejecutar una clase de Java para probar piezas de la funcionalidad de una aplicación de Android (desde un módulo de Java) para leer / escribir datos en el archivo. Si ejecuto dentro del módulo Android, ¡obtengo Stub! errores (...

Primero vea este fragmento: public static void main (String [] args) lanza InterruptedException {Thread anotherThread = new Thread (() -> {Integer countB = 0; while (true) {...

Codifiqué una aplicación en Java para mi teléfono Android que usa una conexión de socket para enviar y recibir datos de texto que funciona bien, usa PrintWriter y BufferedReader. Se dijo mucho en el proceso ...

Empecé a aprender Spring Framework, el término pojo viene muchas veces, y estoy confundido sobre la diferencia entre un objeto normal (Animal a1 = nuevo Animal ()) y un objeto pojo.