一个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


...全文
861 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-----

50,543

社区成员

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

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