JAAS - 灵活的Java安全机制 - 编程入门网
但是这样做也有一些问题,它 要求建立起双向的HTTP连接(在login()方法很难实现双向连接)。因此在我 们的例子中我们会使用利用表单进行登录,从表单中获取用户输入的信息,然后 通过RdbmsLoginModule类验证它。
由于我们没有在应用层同LoginModule直接打交道,而是通过LgoinContext来 调用其中的方法的,我们如何将获得用户名和密码放入LoginModule对象中呢? 我们可以使用其它的方法来绕过这个问题,例如我们可以在创建LoginContext对 象前先初始化一个Subject对象,在Subject对象的凭证中保存用户名和密码。然 后我们可以将该Subject对象传递给LoginContext的构造函数。这种方法虽然从 技术上来说没有什么问题,但是它在应用程序层增加了很多与安全机制相关的代 码。而且通常是在验证后向Subject送入凭证,而不是之前。 前面我们提到可以实现一个CallbackHandler类,然后将它的实例传递给 LoginContext对象。在这里我们可以采用类似的方法来处理用户名和密码。我们 实现了一个新的类PassiveCallbackHandler。下面是在JSP中使用该类的代码:
PassiveCallbackHandler中构造函数的参数包含了用户名和密码。因此它可 以在Callbick对象中设定正确的值。下面是PassiveCallbackHandler类的handle ()方法的代码:
从上面的代码中可以发现实际上我们只是从ConsoleCallbackHandler中去除 了那些提示用户输入的代码。 在运行这个JSP例子的时候,我们需要设定系统属性,这样LgoinContext对象 才知道如何查找名称为"Example"的配置。我们使用的是Resin服务器。在 resin.conf中,我们增加了一个<caucho.com>节点:
小结 JAAS通过提供动态的、可扩展的模型来进行用户验证和控制权限,从而使应 用程序有更加健壮的安全机制。同时它还能够让你能够很轻松地创建自己的登录 机制。JAAS可以同时在在客户端和服务器端应用程序上工作。虽然在服务器端的 JAAS到目前还不是很稳定,但是随着技术的发展,相信会很好地解决这个问题。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |