SSO大家应该有所了解吧?就是单点登录,原理其实很简单,网上也有很多方法,大家也都看得懂,但是现在存在一个问题:
假如我们有www.a.com、www.b.com、www.c.com这3个网站,它们的基本情况如下:
1.已经投入实际运行
2.是不同的开发商提供的
3.每个网站单独一台服务器
4.不在同一局域网内
现在要求加入一个www.d.com站点(该站点可以与前面提到的3个站点同服务器,但也不是必须),该站点中有一个SSO系统,通过该系统认证后,就可以随便访问前面提到的那3个网站了。
现在有个很棘手的问题:如何在不修改原有系统www.a.com、www.b.com、www.c.com的情况下完成SSO?网上的资料基本上全部要或多或少的修改原有系统。
用Session?Cookies?这些都涉及到跨域,而且在有些情况下还不得不修改www.a.com等。
各位高手有没有什么高见?指点小弟一下,不甚感激。PS:请各位看清楚,是“在不修改已有系统”的情况下实现SSO哦!
假如我们有www.a.com、www.b.com、www.c.com这3个网站,它们的基本情况如下:
1.已经投入实际运行
2.是不同的开发商提供的
3.每个网站单独一台服务器
4.不在同一局域网内
现在要求加入一个www.d.com站点(该站点可以与前面提到的3个站点同服务器,但也不是必须),该站点中有一个SSO系统,通过该系统认证后,就可以随便访问前面提到的那3个网站了。
现在有个很棘手的问题:如何在不修改原有系统www.a.com、www.b.com、www.c.com的情况下完成SSO?网上的资料基本上全部要或多或少的修改原有系统。
用Session?Cookies?这些都涉及到跨域,而且在有些情况下还不得不修改www.a.com等。
各位高手有没有什么高见?指点小弟一下,不甚感激。PS:请各位看清楚,是“在不修改已有系统”的情况下实现SSO哦!
解决方案 »
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
- 用asp.net绘制 值日表图片,怎么做
- 动态生成表格的时候第一例如果是合并,怎么作?
- asp:textbox控件在页面上不能显示?????
- 呜~~~~~~~,还是更新数据库的问题!!!!!!!!!我真的不想活了
- TextBox存放带些文本时出的问题
- 各位大哥,请帮帮小弟!从哪里能下到.NET全套的视频教程啊????
- ASP.NET提交查询大量数据时,会出现“超时时间已到”的错误,怎么办?
- 大家节日快乐!为一继承问题
- OnSelectedIndexChanged="headpic_change"为什么<dropdownlist>的这个事件不执行。
- 配置文件的路径问题
- -------------------PopupControlExtender 问题,请指教----------------------
也就是说,SSO系统做了一个中间代理,代替用户向www.a.com提交登录信息。我们再来假如,www.a.com是ASP.NET开发的,login.aspx页面的HTML代码示例:<table border="0" width="100%" cellspacing="0" cellpadding="3" height="100">
<tr>
<td align="right" width="60">用户名:</td>
<td align="left">
<asp:TextBox ID="txtUsername" runat="server" MaxLength="16" Width="160px" Height="24px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" width="60">密码:</td>
<td align="left">
<asp:TextBox ID="txtPassword" runat="server" MaxLength="16" TextMode="Password" Height="24px" Width="160px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" width="60"> </td>
<td align="left">
<asp:Button ID="btnLogin" runat="server" Text=" 登录 " Height="24px" Width="60px" onclick="btnLogin_Click" />
</td>
</tr>
</table>
login.aspx页面的CS代码示例: protected void btnLogin_Click(object sender, EventArgs e)
{
if (Admin.CheckAdmin(txtUsername.Text.Trim(), txtPassword.Text.Trim()))
{
//验证成功
Session["usern"] = txtUsername.Text;
Session["login"] = "true";
Response.Redirect("manage.aspx");
}
else
{
//验证失败
Response.Write("login error.");
}
}像这样的情况,我有两个问题不是太清楚:
1.在www.d.com中的SSO中,用POST方法将用户名、密码POST到www.a.com中,能实现如上形式的登录验证吗?
2.login.aspx页面在www.a.com站点,而SSO的登录页面在www.d.com,且不在同一服务器、不在同一局域网,这样肯定会涉及到跨域的问题,如何解决?
由于客户端保存不了SessionID,所以也就没有办法登录进入系统(因为系统会验证用户是否具有某个SessionID,且其在服务器端的值是否为指定值,如果客户端连SessionID都没有,更何谈验证其在服务器端的Seesion值呢?)