Bonjour,

j'ai pour la mise en place de sécurité dans mon application. Pour le moment, je veux faire des essais mais par la suite j'aimerai interdire l'ouverture de socket, a un plugins de mon application de faire un System.exit(x)...

Pour le moment j'ai le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
 
public class Test {
 
	public static void main(String[] args) {
		System.setSecurityManager(new SecurityManager());
		JFrame frame = new PermissionJFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
 
}
 
class PermissionJFrame extends JFrame {
 
	private JTextField field;
 
	private WorkCheckTextArea textArea;
 
	public PermissionJFrame() {
		setTitle("PermissionTest");
		setSize(500, 300);
 
		field = new JTextField(20);
		textArea = new WorkCheckTextArea();
 
		JPanel panel = new JPanel();
		JButton openButton = new JButton("Insérer");
 
		panel.add(field);
		panel.add(openButton);
 
		openButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				insertWords(field.getText());
			}
		});
 
		add(panel, BorderLayout.NORTH);
		add(new JScrollPane(textArea), BorderLayout.CENTER);
	}
 
	public void insertWords(String word) {
		try {
			textArea.append(word + "\n");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
}
 
class WorkCheckTextArea extends JTextArea {
	public void append(String text) {
		WorkCheckPermission p = new WorkCheckPermission(text, "insert");
		SecurityManager manager = System.getSecurityManager();
		if (manager != null) {
			manager.checkPermission(p);
		}
		super.append(text);
	}
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
import java.security.BasicPermission;
import java.security.Permission;
 
public class WorkCheckPermission extends BasicPermission
{
 
	private String action ;
 
	public WorkCheckPermission(String target,String action)
	{
		super(target);
		this.action = action ;
	}
 
	@Override
	public boolean equals(Object obj) {
		return false;
	}
 
	@Override
	public String getActions() {
		return "";
	}
 
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return getName().hashCode();
	}
 
	@Override
	public boolean implies(Permission permission) {
		return true;
	}
 
}
malhreusement j'ai le code suivant me déclenche l'exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
java.security.AccessControlException: access denied (WorkCheckPermission sqdqs
)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at WorkCheckTextArea.append(Test.java:68)
	at PermissionJFrame.insertWords(Test.java:55)
	at PermissionJFrame$1.actionPerformed(Test.java:45)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)