Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

[转]通行证的实现

Posted on 2009-10-12 19:34  analyzer  阅读(356)  评论(0编辑  收藏  举报

在所有项目中通行证应该是最早被完成,因为其它部分都要整合在通行证中。一个完整的系统都应该有一条用户主线,这条用户主线是系统存在的目的,而所有子模块都要围绕一个通行证中心来结合构成成一个完整的系统,使他们看起来是完全紧密的联系在一起的。悠悠堡的通行证部分是完全基于cookie来完成的。
1。对内信任加密,共享密钥,限域完成 。
这部分主要是通行证和其它子模块共享一个密钥来解密和加密cookie完成所有的操作。因为要共享cookie和密钥,所以这个只能用于处于同域而且完全信任的子模块上。这一部分已经完成。
2。对外非信任加密,提供API接口,任意域名,生成密钥,控制分发 暂不需要。
这一部分没有实现,主要现在用不着,实现的方法也很简单,由通行证提供外部接口,其它域的程序访问这个接口来获得加密的cookie信息,然后再使用自己的密钥解密获得的信息,完成验证。这个子模块所使用的密钥并不是通行证的最高密钥,而是由通行证控制和分发的另一个密钥,不同的子模块可以约定不同的密钥。这样做通行证的性能就会变低很多,可以增加其它方法来优化一下,譬如在子模块第一次请求通行证时,通行证生成子模块的独立cookie等,现在也不用考虑那么多,车到山前必有路。

 

PHP代码
  1. /*      
  2.  *Id : include/common.inc.php 初始化;     
  3.  */      
  4. <?php       
  5. define('ROOT'substr(dirname(__FILE__), 0, -7));       
  6. define('IN_UUBAO', true);       
  7. ini_set('date.timezone''Asia/shanghai');       
  8. define('MAGIC', get_magic_quotes_gpc());       
  9.         
  10. require_once(ROOT.'/include/global.fun.php');       
  11. $startTime = getMicrotime();       
  12. require_once(ROOT.'/include/config.inc.php');       
  13. require_once(ROOT.'/include/db_mysql.class.php');       
  14. require_once(ROOT.'/include/crypt.class.php');       
  15.         
  16. $db = new DB();       
  17. //R 加密类;       
  18. $crypt = new UubaoCrypt($authKey);       
  19. ?>     

 

我要啦免费统计