文中是几个根据自己理解画的图形
by fallseir blog.fallseir.com
关于SSO和CAS可以到这里 SSO(Single Sign-on) in Action(上篇)
http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html

从上面的文章中拷来的图形,重画了下,个人感觉清爽了些

上图是CAS v1的关键用例
user访问service1的服务,service1获取user的身份标记(check login),如果没有就重定向user到server去获取身份标记(sign on),如果有就拿着这个标记到server处去验证标记的真实性(check ticket),验证成功就证明用户已经登录了。

CAS v2的关键用例
只是比v1版多了一个service之间的交互方式,使用新的PT作为身份标识,PT在service1到server端验证用户标记时获取。
当然这里只是简要概述下SSO的CAS实现,而没有涉及CAS中比较重要的安全通信部分

关于Open ID 可以到这里 openid.net.cn
http://www.openid.net.cn/
如果你用的是IE 可以到这里看下 viso生成的Html版

open id 的v1版

核心用例只有几个
associate 与服务器通信获取用于加密通信的安全码
Immediate 向服务器验证用户身份是否正确,立即返回
setup 向服务器验证用户身份,和索要用户信息并等待服务器的回调
check authentication 到服务器端验证来自用户的信息是否正确

不过下面的流程,不仔细看可能就有些乱了

上图将的是open id 的v1版中的setup的流程

下面是最后一幅图了,描述了openid v2版的流程

感觉流程上没有什么大的变动,只是改了名字让流程更清晰和确定些
先到这里了

post by fallseir

技巧:博客圈的json输出 in feedsky
json: http://network.feedsky.com/test_fn/json?d=0&c=15&p=2&e=gbk&v=obj
feedsky发布了新的博客圈系统,并提供了json输出的支持
上面的代码就是我建的一个博客圈的json输出地址
d代表是否输出描述
c代表输出条数
p代表输出的页面(json版的支持分页显示!)
e代表输出的编码(建议使用utf-8或者gbk!)
v代表输出的变量名
比如这个地址的内容 (http://network.feedsky.com/test_fn/json?d=0&c=1&p=1&e=utf-8&v=obj)
稍微整理了下

obj={
title:’测试博客圈’,
description:’测试博客圈\ntesting…’,
is_page_end:”,
item_count:”,
items:[
{title:'笔记:构建分页导航',
pubDate:'Thu, 07 Jun 2007 16:32:13 +0800',
link:'http://item.feedsky.com/~feedsky/fallseir/~1247382/7460200/1223971/1/item.html'
}],
encoding:’utf-8′
};
obj->
title // 圈子标题
description // 圈子描述
is_page_end [...]

构建分页导航
-by fallseir

join_url 和 split_url 参看这里

echo multi_page($current_page_num,$is_page_end);
echo multi_page($current_page_num,false,$item_count);
echo multi_page($current_page_num,false,$item_count,$page_size);
echo multi_page($current_page_num,false,$item_count,$page_size,$req_uri);

function multi_page($page ,$is_page_end,$item_count=false,$page_size=10,$req_uri=false){
if(!$req_uri)
$req_uri=$_SERVER["REQUEST_URI"];
list($path,$args)=split_url($req_uri);
$html [...]

从url中分离query数据
-by fallseir

$req_url=$_SERVER["REQUEST_URI"]; // 获取当前url
list($req_path,$req_queries)=split_url($req_url); // 分离出地址和参数
$value=$req_queries["arg"]; //获取指定参数的值
$req_queries["page"]=2;//设置参数的值
unset($req_queries["arg"]);//清除指定参数

$new_url=join_url($req_path,$req_queries); // 重新组合成完整的地址

function split_url($url){
$req_path=$url;
$req_queries=array();

if(strpos($url,”?”)!==false){
list($req_path,$req_query)=split(”\?”,$url,2);
foreach(split(”&”,$req_query) as $query){
list($q,$v)=split(”=”,$query,2);
[...]

通过shell 方式获取多个有规则的表中的数据
-by fallseir

$ sh out_list.sh > list.txt & # 执行操作并将列表保存到list.txt中
$ vim out_list.sh
for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f;
do
for j in 0 1 2 3 4 5 6 7 8 9 a b c [...]