📄 sampleconfig.java
字号:
/**
* SampleConfig.java
*
* Jaas 配置
*
*/
package examples.security.jaas;
import java.util.Hashtable;
import javax.security.auth.login.Configuration;
import javax.security.auth.login.AppConfigurationEntry;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
* JAAS用户认证的示例配置类
*/
public class SampleConfig extends Configuration
{
String configFileName = null;
/**
*
* 创建一个新的配置对象
*/
public SampleConfig()
{
// No Implementation
}
/**
* 使用一个应用程序名作为索引从配置对象中获取实体
*/
public AppConfigurationEntry[] getAppConfigurationEntry(String applicationName)
{
AppConfigurationEntry[] list = new AppConfigurationEntry[1];
AppConfigurationEntry entry = null;
// 获取特定的配置文件
configFileName = System.getProperty("weblogic.security.jaas.Policy");
System.out.println("使用配置文件: " + configFileName);
try
{
FileReader fr = new FileReader(configFileName);
BufferedReader reader = new BufferedReader(fr);
String line;
line = reader.readLine();
while(line != null)
{
// 跳到起始字符是'{'的行
if(line.length() == 0 || line.charAt(0) != '{')
{
line = reader.readLine();
continue;
}
// 读取包含LoginModule配置信息的行
line = reader.readLine();
int i;
for(i = 0; i < line.length(); i++)
{
char c = line.charAt(i);
if(c != ' ')
break;
}
int sep = line.indexOf(' ', i);
String LMName = line.substring(0, sep).trim();
String LMFlag = line.substring(sep + 1, line.indexOf(' ', sep + 1));
System.out.println("Login Module Name: " + LMName);
System.out.println("Login Module Flag: " + LMFlag);
if(LMFlag.equalsIgnoreCase("OPTIONAL"))
{
entry = new AppConfigurationEntry(LMName,
AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL,
new Hashtable());
list[0] = entry;
}
else if(LMFlag.equalsIgnoreCase("REQUIRED"))
{
entry = new AppConfigurationEntry(LMName,
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
new Hashtable());
list[0] = entry;
}
else if(LMFlag.equalsIgnoreCase("REQUISITE"))
{
entry = new AppConfigurationEntry(LMName,
AppConfigurationEntry.LoginModuleControlFlag.REQUISITE,
new Hashtable());
list[0] = entry;
}
else if(LMFlag.equalsIgnoreCase("SUFFICIENT"))
{
entry = new AppConfigurationEntry(LMName,
AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT,
new Hashtable());
list[0] = entry;
}
else
{
throw new IllegalArgumentException("Invalid controlFlag");
}
line = reader.readLine();
}
reader.close();
}
catch(java.io.FileNotFoundException ioe)
{
System.out.println(ioe.toString());
}
catch(java.io.IOException ioe)
{
System.out.println(ioe.toString());
}
return list;
}
/**
* 通过再次读取所有注册配置刷新和重加载配置对象
*/
public void refresh()
{
// 没有实现
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -