Geronimo V2.1.5 中的安全提升
2010-07-02 00:00:00 来源:WEB开发网这个约束表明 monitor 角色只能访问有限的 URL。同时,在 navigation.jsp 中采用编程型安全实现方式,添加类似如下语判断语句:
if(request.isUserInRole("monitor")){
…
}
以此来控制 monitor 角色可以访问的页面连接。同样的逻辑也可应用于 mconsole-war 的 web.xml 和 JSP 页面中。
Monitor 用户登录后的界面如图 1 所示。
图 1. Monitor 用户登录后的控制台界面
查看原图(大图)
Kerberos 登录模块
Kerberos 协议用于在不安全的网络环境中不同计算机节点之间的安全通讯。Java EE 5 的规范中并没有要求 Java EE 产品必须提供 Kerberos 协议的支持,同样 Geronimo 在以往版本也没有明确提供该协议的支持。但用户可以通过扩展 Geronimo 所提供的 API,利用底层 Java 系统提供的 Kerberos 实现在 Geronimo 中提供对 Kerberos 协议的支持。IBM JDK 和 Sun JDK 分别提供不同类来支持 Kerberos 协议,Geronimo 所做的只是对 JDK 中提供的类进行再次包装,然后通过实现 Geronimo 中 LoginModule 这个接口,就可以使用户在使用 Kerberos 安全域时如同使用 Geronimo 中已经提供的 SQL、Properties 和 LDAP 安全域一样方便。
我们来简单了解一下具体的技术细节
清单 13. KerberosLoginModule 之 initialize()
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
this.subject = subject;
String krb5LoginModuleClass = (String) options.get("krb5LoginModuleClass");
…
krb5Subject = new Subject();
krb5LoginModule.initialize(krb5Subject, callbackHandler, sharedState, options1);
String addOnPrincipalClass = (String) options.get("addOnPrincipalClass");
String addOnPrincipalName = (String) options.get("addOnPrincipalName");
if(addOnPrincipalClass != null && !addOnPrincipalClass.equals("")) {
krb5LoginModule = (LoginModule)Class.forName(krb5LoginModuleClass).newInstance();
}
…
}
更多精彩
赞助商链接