JAAS - 灵活的Java安全机制 - 编程入门网
r、url、user 和password是必需的,而debug是可选阐述。driver、url、user和password参数 告诉我们如何获得JDBC连接。当然你还可以在ModuleOption域中加入数据库中的 表或列的信息。使用这些参数的目的是为了能够对数据库进行操作。在 LoginModule类的initialize()方法中我们保存了每个参数的值。
我们前面提到一个LoginContext对应的配置文件告诉它应该使用文件中的哪 一个申请。这个信息是通过LgoinContext的构造函数传递的。下面是初始化客户 端的代码,在代码中创建了一个LoginContex对象并调用了login()方法。
当LgoinContext.login()方法被调用时,它调用所有加载了的LoginModule 对象的login()方法。在我们的这个例子中是RdbmsLoginModule中的login() 方法。 RdbmsLoginModule中的login()方法进行了下面的操作: 1. 创建两个Callback对象。这些对象从用户输入中获取用户名/密码。程序 中使用了JAAS中的两个Callback类:NameCallback和PasswordCallback(这两个 类包含在javax.security.auth.callback包中)。 2. 通过将callbacks作为参数传递给CallbackHandler的handle()方法来激 活Callback。 3. 通过Callback对象获得用户名/密码。 4. 在rdbmsValidate()方法中通过JDBC在数据库中验证获取的用户名/密 码。 下面是RdbmsLoginModule中的login()方法的代码
在ConsoleCallbackHandler类的handle()方法中你可以看到Callback对象 是如何同用户进行交互的:
JAAS - 灵活的Java安全机制(6)时间:2010-12-20使用JSP和关系数据库进行登录验证 现在我们希望将通过命令行调用的程序一直到Web应用程序中。由于Web应用 程序与一般的应用程序的交互方式有区别不同,我们将不能使用JAAS提供的标准 Callback和CallbackHandler类。因为我们不能在Web程序中打开一个命令窗口让 用户输入信息。也许你会想到我们也可以使用基于HTTP的验证,这样我们可以从 浏览器弹出的用户名/密码窗口中获得用户输入。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |