Java帝国之安全争斗
作者:网友投稿 时间:2018-04-01 16:19
1.前言
在Java帝国第三代国王的推动下,帝国对臣民们提供了一个叫做Java 认证与授权服务(Java Authentication Authorization Service, 简称JAAS)的东西, 在第四代国王的争取下, JAAS成功地进入了JDK,成为了标准包的一部分。
国王希望JAAS能够一统安全领域,像JDBC那样引发使用的狂潮,成为一个重要的基础设施,特意设置了一个新职位JAAS大臣,任命了一个自己的心腹去推动这件事情。

可是希望越大,失望就越大,除了几家利益相关的豪门望族在不断地摇旗呐喊之外,臣民们对JAAS不屑一顾,没多少人使用。
2雷秀才
IO大臣这一天在家里闲得无聊, 带着忠心耿耿的幕僚InputReader 出去微服私访,来到了京城一个著名的酒馆,点了几样精致小菜,一壶美酒。还没开吃,就看到邻桌的一个书生在唉声叹气。
IO大臣心中一动,就把他叫过来一起聊聊。
原来这位书生是雷秀才,说是家乡赋税沉重,都没法活下去了,特意来京城上访,无奈不得其法,连门都进不去。
IO大臣起了好奇心,忙问是怎么回事。
雷秀才说:“都是JAAS惹得祸。”
“JAAS?”
“就是认证和授权嘛!” 雷秀才看到对方不知道,略有失望之色。
“认证? 授权?”
“认证就是确定你是谁, 通常需要验证对方提供的用户名和密码。 授权就是确定你能做什么。比如能否创建账号,能够删除用户等等。”
“呃呃,想起来了,为什么不用官方的JAAS,帝国的标准还是挺好的嘛,比如JDBC。”
“老先生您有所不知,JDBC标准自然是没得说, 但是这个JAAS,唉,用起来极为繁琐,大家都不愿意使用。可是那个JAAS大臣根本不管这些,一直疯狂地推广JAAS, 如果不用,就要课以重税, 我们都活不下去了。”
“这倒是有点麻烦,你们打算怎么办?” IO大臣先去试探对方套路。
雷秀才压低了声音:“不瞒老先生,我们家族已经推出了一个新的认证和授权的系统,叫做JSecurity,想托京城的大人们献给陛下,把JAAS替换掉。 ”
“哦?!” IO大臣坐直了身体,这可是一件大事!
3JSecurity
IO大臣和InputReader 交换了一下眼色: 一个新的机会到来了!
之前和线程大臣斗,和XML大臣斗,和JDBC/JTA大臣斗,打来打去,杀来杀去,自己也占不到什么便宜。
这一次也许可以把安全领域给抓住!
InputReader问道: “你说说这个JSecurity有什么好处? ”
“简单,灵活,好用!比JAAS好用多了!” 雷秀才说。
“太抽象了,来点干货。”
雷秀才突然警惕起来,只是喝酒,笑而不语。
IO大臣决定打开天窗说亮话: “不瞒你说,我就是当朝的IO大臣,你不用怕,我可以帮你上奏陛下。”
“啊?!” 雷秀才满脸惊诧之色,没想到在这里竟然偶遇当朝大员, 看来上午去庙里拜佛是对的,赶紧站起来行礼: “失敬失敬!”
IO大臣说:“现在可以聊聊你的JSecurity了吧?”
雷秀才早有准备,从袖子中抽取出两张写满了代码的纸,呈给IO大臣和InputReader:
Subject currentUser = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("liuxin", "123456");
currentUser.login( token );
if (currentUser.hasRole( "admin" )) {
logger.info("You're Administrator!" );
}
if (currentUser.isPermitted( "user:delete" )) {
logger.info("You can delete any users! be careful!");
}
currentUser.logout();
(友情提示:代码可左右滑动)
IO大臣戴上老花镜,举着纸看了半天:“你这里为什么叫做Subject啊? 怎么不叫User?”



