• 博客园Logo
  • 首页
  • 新闻
  • 博问
  • 会员
  • 闪存
  • 班级
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 简洁模式 ... 退出登录
    注册 登录
老杨随笔-重用与重构的艺术
专注于RIA架构设计,无止境的重构,无限制的重用
博客园    首页    新随笔    联系   管理    订阅  订阅

适合每个人的单点登陆(SSO)

  单点登陆(SSO),一个很老的问题.

详细内容请参考 Single Sign-On for everyone

Michael Morozov对很多情形的SSO做了阐述: 

1.         父/子应用在虚拟子目录之间的SSO.
2.         不同授权凭证应用之间的SSO(用户名重映射)
3.         同根下的二级子域名应用之间的SSO
4.         不同.NET版本应用之间的SSO
5.         不同域名应用之间SSO.
6.         混合验证模式下的SSO(窗体验证/Windows验证)

尽管已经详细描述了这么多种情形,但我还是遇到了一点儿问题. 花了俺一天, 特此共享一下:
(我测试的是: http://localhost/test1/, http://localhost/test2/, http://localhost/test3/)

1.       在所有应用的web.config中设定相同的name,如.CROAUTH
<authentication mode="Forms">
   <forms name=".CROAUTH" protection="All" loginUrl="Login.aspx" />
</authentication>

2.       所有应用的web.config的System.Web节点下添加machineKey,默认值是各个应用自动生成的
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" />

3.       每个应用都是独自的登陆页面,验证后以RedirectFromLoginPage跳转.
    if(fa.Login(strLogCode,strPassword))
        FormsAuthentication.RedirectFromLoginPage(strLogCode, false);

4.       尽管号称SSO,他们仅共享cookie,跳转时有几个应用仍将建立几个Seesion.
  各应用之间仅共享登陆名信息,需有Session补全信息机制.如根据LogCode取部门,邮件等.

posted @ 2007-03-02 17:02  craboYang  阅读(2859)  评论(2)  编辑  收藏  举报
刷新评论刷新页面返回顶部
Copyright © 2023 craboYang
Powered by .NET 7.0 on Kubernetes