JAAS编辑
目录
1JAAS简介编辑
2JAAS用户认证框架编辑
3JAAS:可插入式认证编辑
|
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
|
package
samples;
import
javax.security.auth.Subject;
import
javax.security.auth.login.LoginContext;
import
javax.security.auth.login.LoginException;
import
com.sun.security.auth.callback.TextCallbackHandler;
public
class
CountFiles {
static
LoginContext lc =
null
;
public
static
void
main(String[] args) {
//使用配置文件中名字为“CountFiles”的条目
try
{
lc =
new
LoginContext(
"CountFiles"
,
new
TextCallbackHandler());
}
catch
(LoginException le) {
le.printStackTrace();
System.exit(-
1
);
}
try
{
lc.login();
//如果没有异常抛出,则表示认证成功
}
catch
(Exception e) {
System.out.println(
"Login failed: "
+ e);
System.exit(-
1
);
}
//以认证用户的身份执行代码
Object o = Subject.doAs(lc.getSubject(),
new
CountFilesAction());
System.out.println(
"User "
+ lc.getSubject( ) +
" found "
+ o +
" files."
);
System.exit(
0
);
}
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
|
package
samples;
import
java.io.File;
import
java.security.PrivilegedAction;
class
CountFilesAction
implements
PrivilegedAction {
public
Object run() {
File f =
new
File(
"."
);
File[] files = f.listFiles();
return
new
Integer(files.length);
}
}
|
25.1.2. JAAS核心类和接口
|
1
2
3
4
|
<name used by application to refer to
this
entry> {
<LoginModule> <flag> <LoginModule options>;
<optional additional LoginModules, flags and options>;
};
|
|
1
2
3
|
CountFiles {
com.apusic.security.auth.login.ClientPasswordLoginModule required;
};
|
25.1.4. 编写Policy文件
|
1
2
3
4
5
6
|
grant <signer(s) field>, <codeBase URL>
<Principal field(s)> {
permission perm_class_name
"target_name"
,
"action"
;
....
permission perm_class_name
"target_name"
,
"action"
;
};
|
|
1
2
3
4
5
6
7
8
9
|
grant codeBase
"file:./build"
{
permission java.security.AllPermission;
};
grant codeBase
"file:/${apusic.home}/lib/apusic.jar"
{
permission java.security.AllPermission;
};
grant codeBase
"file:./build/actions"
Principal com.apusic.security.PrincipalImpl
"admin"
{
permission java.io.FilePermission
"<<ALL FILES>>"
,
"read"
;
};
|
25.1.5. 运行范例程序
|
1
2
3
4
5
|
java -classpath %APUSIC_HOME%/lib/apusic.jar;./build;./build/actions
-Djava.security.manager
-Djava.security.policy==policy.jaas
-Djava.security.auth.login.config==login.conf
-Dapusic.home=%APUSIC_HOME% samples.CountFiles
|
1万+



被折叠的 条评论
为什么被折叠?



