Проверьте разрешение для запроса клиента и проверьте в файле политики в Java (сокет) - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть 5 клиентских классов и серверный класс (mutilthread). Я установил файл политики с помощью метода setProperty, но я не уверен, как реализовать. Я попытался с разрешением проверки, но у меня это не сработало. Можно ли как-нибудь реализовать проверку прав доступа, для которых у клиента есть доступ, а у кого нет, основываясь на файле политики?

Файл политики

/* AUTOMATICALLY GENERATED ON Thu Nov 08 19:52:58 GST 2018*/
/* DO NOT EDIT */

grant{
    permission java.io.FilePermission"D:\\Uni\\System security\\Client 
    Server Example\\ClientServerExample\\src\\javaapplication2\\abc.txt", 
    "read",signedBy"client1";

    permission java.io.FilePermission"D:\\Uni\\System security\\Client Server Example\\ClientServerExample\\src\\javaapplication2\\abc.txt","write",signedBy"client2";

    };

Например: клиент1 имеет доступ ко всему

client2 может писать только

клиент 3 может читать только

Код сервера

public class Server {

@SuppressWarnings("resource")
public static void main( String args[] ) throws IOException, InterruptedException
{
    ServerSocket socket = null;
    DataInputStream in;
    PrintStream out;
    Socket clientSocket1 = null;

    System.setProperty( "java.security.policy", "file:/C:/Users/Ali/Desktop/java.policy" );

    while ( true )
    {
        socket = new ServerSocket( 285 );
        System.out.println( "Server is Awaiting" );
        clientSocket1 = socket.accept();

        in = new DataInputStream( ( clientSocket1 ).getInputStream() );//read from client1
        BufferedReader fileRead = new BufferedReader( new InputStreamReader( in ) );
        String fname = fileRead.readLine();

        try
        {

            BufferedReader contentRead = new BufferedReader( new FileReader( fname ) );
            out = new PrintStream( clientSocket1.getOutputStream() );//write to client1
            PrintWriter pwrite = new PrintWriter( out, true );

            String str;
            while ( ( str = contentRead.readLine() ) != null )
            {
                pwrite.println( str );         // sending each line to client
            }

        }
        catch ( SecurityException e )
        {
        }
        Multi t = new Multi( clientSocket1 );
        t.start();
        Thread.sleep( 2000 );
        socket.close();
    }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...