一个jaas的问题,一天了也没有搞定,找不到问题。

songlipeng2003 2007-02-01 11:25:08
4个文件
1.ConsoleCallbackHandler.java
package test;

import javax.security.auth.login.*;
import javax.security.auth.callback.*;
import java.io.*;

public class ConsoleCallbackHandler implements CallbackHandler {
public void handle(Callback callbacks[]) throws java.io.IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof NameCallback) {
NameCallback nameCb = (NameCallback) callbacks[i];
System.out.print(nameCb.getPrompt());
String user = (new BufferedReader(new InputStreamReader(System.in))).
readLine();
nameCb.setName(user);
}
else if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback passCb = (PasswordCallback) callbacks[i];
System.out.print(passCb.getPrompt());
String pass = (new BufferedReader(new InputStreamReader(System.in))).
readLine();
passCb.setPassword(pass.toCharArray());
}
else {
throw (new UnsupportedCallbackException(callbacks[i],
"Callback class not supported"));
}
}
}
}

2.RdbmsLoginModule.java
package test;

import javax.security.auth.spi.LoginModule;
import javax.security.auth.callback.*;
import java.util.*;
import javax.security.auth.*;

public class RdbmsLoginModule implements LoginModule {

private CallbackHandler callbackHandler;

public RdbmsLoginModule() {
}

public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
this.callbackHandler=callbackHandler;
String s1 = (String) options.get("url");
System.out.println(s1);
}

public boolean login() {
NameCallback nameCb = new NameCallback("user: ");
PasswordCallback passCb = new PasswordCallback("password: ", true);
Callback[] callbacks = new Callback[] {
nameCb, passCb};
try{
callbackHandler.handle(callbacks);
}catch(Exception e){
e.printStackTrace();
}

String username = nameCb.getName();
String password = new String(passCb.getPassword());

if (username.equals("songlipeng2003") && password.equals("2010525")) {
return true;
}
else {
return false;
}
}

public boolean logout() {
return false;
}

public boolean abort() {
return false;
}

public boolean commit() {
return false;
}
}

3.Hello.java
package test;

import javax.security.auth.login.*;

public class Test {
public static void main(String[] args) {
System.setProperty("javax.security.auth.login.config","./test.config");
ConsoleCallbackHandler handler=new ConsoleCallbackHandler();
try{
LoginContext lc=new LoginContext("hello",handler);
lc.login();
}catch(LoginException e){
e.printStackTrace();
}
}
}

4.test.config
hello {
test.RdbmsLoginModule required debug=true;
};

出现异常:
--------------------Configuration: <Default>--------------------
Exception in thread "main" java.lang.SecurityException: 无法定位登录配置
at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.security.auth.login.Configuration$3.run(Configuration.java:246)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:241)
at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.init(LoginContext.java:234)
at javax.security.auth.login.LoginContext.<init>(LoginContext.java:403)
at test.Test.main(Test.java:10)
Caused by: java.io.IOException: 无法定位登录配置
at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250)
at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91)
... 14 more

这些文件都放在同一个文件夹下啊,路径应该没有问题。登录config文件也应该没有问题,改了好多次了啊。都是这个错误,我从IBM下了一个和这个差不多的例子,就是可以运行,但是不知道我错到了那里啊。
ibm的相关例子的网址:http://publib.boulder.ibm.com/iseries/v5r2/ic2989/info/rzaha/jaashllo.htm


...全文
889 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
computerclass 2007-04-05
  • 打赏
  • 举报
回复
我也有这个问题,你没有配置grant那个文件是什么意思????
songlipeng2003 2007-02-12
  • 打赏
  • 举报
回复
问题已经解决了
是安全问题
没有配置grant那个文件
david_turing 2007-02-08
  • 打赏
  • 举报
回复
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The Same problem and solution:
http://www.blogjava.net/security/archive/2006/03/20/36216.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32) - WinPT 0.7.96rc1
Comment: www.pgp.org.cn

iD8DBQFFyxd9TaPfUVwGl08RAs5fAJ9CE2Q5/ixT3mVg+OKLjLEYwayspgCfZpuD
kVkH7W5bNgD1a79TTCZGN4E=
=E4tG
-----END PGP SIGNATURE-----
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧