各应用系统单点登录支持方案
1、
序言
随着局内业务应用系统越来越多,对于某一局内用户,在不同的业务应用系统中会有多个帐户,而且在不同应用系统间切换,需要不停的登录注销,比较烦琐。
为配合局内业务应用系统整合,推出单点登录系统(SSO),将各应用系统统一到单一登录界面,登录一次,即可实现不同应用系统间的切换,不需要重复登录注销,也可提高用户体验。
2
、适用系统
1)考虑到目前不同系统开发语言的不同,实现的方式也有区别,目前SSO系统只支持B/S模式的应用系统,支持ASP,ASP.NET,PHP,JSP系统。
2)所有局内用户可以登录的业务应用系统(B/S)
3)所有开发或维护人员
3
、实现
3.1应用系统中的新用户注册中的单点登录系统关联
该模块在第二阶段中实现
3.2应用系统中旧用户单点登录的激活
1)应用系统添加一个页面,完成帐号激活
2)页面元素有,信息提示Label,激活按钮Button,局内用户列表DropDownList。其它视情况而定
3)添加web引用,地址:
http://sso.schema.gov.cn/sso_ws/sso.asmx。
4)PageLoad调用web service方法GetSSOUsers加载局内用户列表,并填充到DropDownList
5)选择对应的局内用户名,激活按钮调用web service方法SSOActive
6)事例代码:向SSO开发人员索取aspx.及aspx.cs文件。(所有系统都可使用)
3.3应用系统中的用户密码更改
该模块在第二阶段中实现
3.4应用系统登录
以下以asp.net为例
1) 新建一个AppLogin.aspx(或其它名称,但必须告之SSO开发人员)。
2) 添加web引用,地址:
http://sso.schema.gov.cn/sso_ws/sso.asmx。
3) 在AppLogin.aspx的PageLoad事件中做如下处理。
事例代码:
protected void Page_Load(object sender, EventArgs e)
{
//接收上页传入的身份验证信息 Token
String Token = Request.QueryString["Token"];
//调用WEB方法取出应用系统对应用帐号LoginUserId
cn.gov.schema.sso.sso sso = new cn.gov.schema.sso.sso();
String LoginUserId = sso.GetLoginByToken(Token);
//判断WEB方法执行是否成功,或者Token是否已生成。
if (LoginUserId == "noneLogin")
{
//显示信息
this.lab_msg.Text = "SSO系统身份验证失败,登录不成功";
//在aspx页面上提供转向应用系统登录页,使用户能直接到应用系统中登录;
return;
}
//删除Token
sso.TokenLost(Token);
//应用系统登录信息处理,并保存对应的Session或Cookie。
//注意这里只提供用户名,在应用系统必须有一个方法根据用户名取得用户信息。
//Session[“UserInfo”] = UserInfo;
//转入对应的应用系统主页
Response.Redirect(“index.aspx”);
}
//-----------------------------------------------------
数据库和代码整理一下再发 by schema