zoukankan      html  css  js  c++  java
  • MOSS2007 如何实现SSO项目总结

    MOSS2007 如何实现SSO项目总结

      单点登陆目前以下几种情况:
    1 如果MOSS2007采用AD认证,可以使用MOSS自带的SSO,分别把用户信息(用户名和密码)采用POST方式传递给各个应用系统(如:OA系统,邮件系统等);

    2 如果MOSS2007采用Form认证,可以使用MOSS自带的SSO,分别把用户信息(用户名和密码)采用POST方式传递给各个应用系统(如:OA系统,邮件系统等);

    3 如果公司有自己的用户管理系统,而又拥有单独的SSO系统,需求是实现各个应用系统(如OA,邮件)与MOSS双向实现单点登陆;
    现在介绍实现思路如下:

    (1)开发自定义Membership 和 RoleProvider
    MembershipProvider必需实现的接口为:
    System.Web.Security.MembershipProvider.GetUser

    System.Web.Security.MembershipProvider.GetUserNameByEmail(System.String)

    System.Web.Security.MembershipProvider.ValidateUser(System.String,System.String)

    System.Web.Security.MembershipProvider.FindUsersByEmail(System.String,System.Int32,System.Int32,System.Int32)

    System.Web.Security.MembershipProvider.FindUsersByName(System.String,System.Int32,System.Int32,System.Int32)

    RoleProvider必需实现的接口为:
    System.Web.Security.RoleProvider.GetRolesForUser(System.String)

    System.Web.Security.RoleProvider.RoleExists(System.String)

    (2)入口为SSO,开发自定义WebPart,核心代码如下:
                //如果用户登陆,则显示用户登陆信息,已经各个应用系统的入口地址
                if (this.Context.User.Identity.IsAuthenticated == true)
                {
                    //this.LoginPanel.Visible = false;
                    this.WelcomeLabel.Text = SPContext.Current.Web.CurrentUser.Name.ToString();
                    this.WelcomePanel.Visible = true;
                }
                else
                {
                    //统一入口为SSO
                    //如果用户没有登陆,则跳转到SSO的登陆页面,如果登陆成功,则由SSO自动重定向MOSS站点首页
                    //在这个过程中,用户的信息已经由SSO成功记录,这时其它应用系统就能共享这些信息,实现与MOSS双向单点登陆
                    SSOClient.SSOClientBusiness ssoClient = new SSOClient.SSOClientBusiness();
                    Dictionary<string, string> userInfo = ssoClient.Login(null, this.Page);
                   
                    //获取帐户名
                    MembershipUser muser = Membership.GetUser((object)userInfo["UniqueID"], false);

                    //用帐户名登陆MOSS
                    FormsAuthentication.RedirectFromLoginPage(muser.UserName, false);
                    Response.Redirect(Request.Url.ToString());
                }
               
     (3)入口为MOSS,开发自定义WebPart,核心代码如下:
     
             protected void Page_Load(object sender, EventArgs e)
            {
              

                if (this.Context.User.Identity.IsAuthenticated == true)
                {
                    this.LoginPanel.Visible = false;
                    this.WelcomeLabel.Text = SPContext.Current.Web.CurrentUser.Name.ToString();
                    this.WelcomePanel.Visible = true;
                }
                else
                {
                    this.LoginPanel.Visible = true;
                    this.WelcomePanel.Visible = false;
                }
            }
           
             protected void loginSubmit_Click(object sender, EventArgs e)
            {
                string userID = this.loginUserId.Text;
                string password = this.loginUserPwd.Text;

                if (Membership.ValidateUser(userID, password))
                {
                    //在这里采用跨越Cookie,以达到MOSS与应用系统的双向单点登陆,
                    // 这个没能最终实现,如果有高手已经实现,请共享出来
                   
                    //用帐户名登陆MOSS
                    FormsAuthentication.RedirectFromLoginPage(userID, this.RememberMe.Checked);
                    Response.Redirect(Request.Url.ToString());
                             
                }
                else
                {
                    this.lblTipMsg.Text =  "用户名或密码不正确,请重新登陆!";
                }
            }
        }   

  • 相关阅读:
    【01】Maven依赖插件之maven-dependency-plugin
    docker(六) 使用docker-maven-plugin插件构建docker镜像
    SpringBoot 打包配置去除第三方依赖包
    maven打包为jar文件时,解决scope为system的jar包无法被打包进jar文件的解决方案。
    SpringBoot入门之spring-boot-maven-plugin
    SpringBoot系列之—瘦身部署
    java之mybatis之模糊查询
    java之mybatis之查询及分页
    java之mybatis之占位符
    java之mybatis之使用mybatis实现crud操作
  • 原文地址:https://www.cnblogs.com/dbasys/p/2127542.html
Copyright © 2011-2022 走看看