У меня есть 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();
}
}}