Files
2019-05-22 19:31:49 +08:00

67 lines
2.0 KiB
Java

package jaas;
import java.awt.*;
import javax.security.auth.*;
import javax.security.auth.login.*;
import javax.swing.*;
/**
* This frame has text fields for user name and password, a field for the name of the requested
* system property, and a field to show the property value.
*/
public class JAASFrame extends JFrame
{
private JTextField username;
private JPasswordField password;
private JTextField propertyName;
private JTextField propertyValue;
public JAASFrame()
{
username = new JTextField(20);
password = new JPasswordField(20);
propertyName = new JTextField("user.home");
propertyValue = new JTextField(20);
propertyValue.setEditable(false);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 2));
panel.add(new JLabel("username:"));
panel.add(username);
panel.add(new JLabel("password:"));
panel.add(password);
panel.add(propertyName);
panel.add(propertyValue);
add(panel, BorderLayout.CENTER);
JButton getValueButton = new JButton("Get Value");
getValueButton.addActionListener(event -> getValue());
JPanel buttonPanel = new JPanel();
buttonPanel.add(getValueButton);
add(buttonPanel, BorderLayout.SOUTH);
pack();
}
public void getValue()
{
try
{
LoginContext context = new LoginContext("Login1", new SimpleCallbackHandler(
username.getText(), password.getPassword()));
System.out.println("Trying to log in with " + username.getText()
+ " and " + new String(password.getPassword()));
context.login();
Subject subject = context.getSubject();
propertyValue.setText(""
+ Subject.doAsPrivileged(subject, new SysPropAction(propertyName.getText()), null));
context.logout();
}
catch (LoginException ex)
{
ex.printStackTrace();
Throwable ex2 = ex.getCause();
if (ex2 != null) ex2.printStackTrace();
}
}
}