java.rmi.RMISecurityManager Clase en Java

El RMISecurityManager hace cumplir la política de seguridad para las clases que se cargan como apéndices para objetos remotos, anulando todos los métodos de verificación de acceso relevantes del SecurityManager . De forma predeterminada, los objetos stub solo pueden realizar operaciones de definición de clases y acceso a clases. 

Nota: 

  • Si el administrador de seguridad local no es un RMISecurityManager mediante el método System.setSecurityManager()
  • Luego, las clases de código auxiliar solo se podrán cargar desde el sistema de archivos local.
java.lang.Object
java.lang.SecurityManager
java.rmi.RMISecurityManager

Sintaxis:

public class RMISecurityManager 
extends SecurityManager

Nota: una subclase de SecurityManager utilizada por aplicaciones RMI que utilizan código descargado. 

El cargador de clases de RMI no descargará ninguna clase desde ubicaciones remotas si no se ha configurado un administrador de seguridad. RMISecurityManager no se aplica a los subprogramas, que se ejecutan bajo la protección del administrador de seguridad de su navegador. RMISecurityManager implementa una política que no es diferente a la política implementada por SecurityManager. Por lo tanto, una aplicación RMI debe usar la clase SecurityManager u otra implementación de SecurityManager específica de la aplicación en lugar de esta clase.

¿Cómo incorporar la clase Security Manager? 

Para usar un SecurityManager en su aplicación, agregue la siguiente declaración a su código (debe ejecutarse antes de que RMI pueda descargar el código de hosts remotos, por lo que lo más probable es que deba aparecer en el método principal de su aplicación)

Sintaxis:

System.setSecurityManager(new SecurityManager());

RMISecurityManager implementa una política idéntica a la política implementada por SecurityManager. Las aplicaciones RMI deben usar la clase SecurityManager u otra implementación apropiada de SecurityManager en lugar de esta clase. El cargador de clases de RMI descargará clases desde ubicaciones remotas solo si se ha configurado un administrador de seguridad.

Ahora avancemos con el constructor de esta clase de la siguiente manera:

  • RMISecurityManager() : construye un nuevo RMISecurityManager

Implementación:

if (System.getSecurityManager() == null) 
{
    // Setting the RMISecurityManager on System
    System.setSecurityManager(new SecurityManager());
} 

Los applets normalmente se ejecutan en un contenedor que ya tiene un administrador de seguridad, por lo que generalmente no es necesario que los applets establezcan un administrador de seguridad. Si tiene una aplicación independiente, es posible que deba configurar un SecurityManager para habilitar la descarga de clases. Esto se puede hacer agregando lo siguiente a su código. (Debe ejecutarse antes de que RMI pueda descargar el código de hosts remotos, por lo que lo más probable es que deba aparecer en el método principal de su aplicación, como se puede percibir mejor en las ilustraciones a continuación.

Ilustración 1:

// Protected synchronized method
protected static synchronized void setSecurityManager() 
{
    if (System.getSecurityManager() == null) 
    {
        // Setting the RMISecurityManager on System
        System.setSecurityManager(new RMISecurityManager());
    }
}

Ilustración 2:

// Synchronized method
synchronized static void ensureSecurityManager() 
{
    if (System.getSecurityManager() == null) 
    {
        // Setting the RMISecurityManager on System
        System.setSecurityManager(new RMISecurityManager());
    }
}

Ilustración 3:  

// Protected synchronized method
protected static synchronized void setSecurityManager() 
{
    if (System.getSecurityManager() == null) 
    {
        // Setting the RMISecurityManager on System
        System.setSecurityManager(new RMISecurityManager());
    }
}

Ejemplo

Java

// Java Program to Illustrate RMISecurityManager Class
// Via creating Registry and Rebinding Service
 
// Importing required classes
import java.lang.Object;
import java.lang.SecurityManager;
import java.rmi.RMISecurityManager;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Try block to check for exceptions
        try {
 
            // Setting the RMISecurityManager on System
            System.setSecurityManager(
                new RMISecurityManager());
            RmiService service = new RmiServiceImpl();
 
            // First we will be creating registry
            // using createRegistry() method
            LocateRegistry.createRegistry(6600);
 
            // Now rebinding the service
            // using rebind method
            Naming.rebind(
                "rmi://127.0.0.1:6600/PersonService",
                service);
 
            // Display message on the console for
            // successful execution of the program
            System.out.println("Service Start!");
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Printing the line number where exception
            // occurred using printStackTrace() method
            e.printStackTrace();
        }
    }
}

Producción: 

Service Start!

En la consola, aterrizaremos en un mensaje de pantalla como se muestra arriba.

Publicación traducida automáticamente

Artículo escrito por praveen13kulkarni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *