关于BusinessObjects系统单点登录(SSO)解决办法(二)

    BusinessObjects支持单点登录(Single sign on 简称SSO)功能,但那是指的是使用Windows活动目录认证的一种方法。与目前我们常用的使用超链接进行的单点登录(登录在别系统中,使用别系统的当前用户来认证BusinessObjects进行登录)属于不同类型的单点登录类型。为此,我们只能另求他法。经过研究,下面两种方法满足我们目前的要求:

   点击此处查看方法一

b)   方法二

使用嵌入法。这种方法可以直接登录到BusinessObjectsInforview的主页,这样,所有用户可用的报表就直接由Inforview的主页来展示。

原理:Inforview使用form的认证方式,每一个Form在认证的时候,总是会先检查一个叫做“CE_ENTERPRISESESSION”的Session,如果这个Session里面存在一个BO已经登录了的“EnterpriseSession,那么,页面可以显示,否则,自动跳转到Inforview的登录页面。

利用这个机制,我们可以为BO创建一个“EnterpriseSessionSession的方法。有人可能会马上想到,我在外部的网站中创建一个这样的Session,然后传递的Inforview中,不就可以了么。想法是对的,但是,难就难在因为网站的隔离性,这样的Session是很难共享的。我已经实验过多次,均告失败。如果您有更好的办法,希望不吝赐教。

既然在别的网站创建的Session不能共享,那么,我们可以使用嵌入法啊。也就是,在Inforview网站的内部创建这个Session。但是由于Inforview是编译运行的网站,所以,我们得需要另外建立别的网页,在我们的网页中进行单点登录,生成Session,最后把这个网页和所生成的DLL文件拷贝到inforview的相应目录下面,使其成为Inforview网站的一部分。当我们需要单点登录到Inforview的主页的时候,我们传递用户信息等参数直接调用我们自己开发的网页,再由我们自己的网页RedirectInforview的主页。

注意一点的是,Inforview目前的R2版本是VS2003开发的,所以,我们创建的网页也得需要Vs2003来进行开发。

步骤:

Ø         打开vs2003,新建一个命名为BOSSO网站。

Ø         把默认产生的WebForm1删除掉,添加一个命名为SSOLogon.aspx的网页。

Ø         项目添加对“CrystalDecisions.Enterprise”和“CrystalDecisions.Enterprise.WebControls”引用。

打开SSOLogon.aspx的代码,在Page_Load中增加如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
    
string strSystem = Request.QueryString["System"];
    
string strUser = Request.QueryString["SSOUser"];
    
string strPWD = Request.QueryString["SSOPWD"];
    CrystalDecisions.Enterprise.WebControls.Identity MainIdentity 
= new CrystalDecisions.Enterprise.WebControls.Identity();
    
bool Success = MainIdentity.Logon(strUser, strPWD, strSystem, "Enterprise");
    
if (Success)
    
{
HttpContext.Current.Session[
"CE_ENTERPRISESESSION"= MainIdentity.EnterpriseSession;
Response.Redirect(
"main.aspx"false);
    }

    
else
    
{
Response.Redirect(
"Logon.aspx"false);
    }

}


注:在本示例中,我们使用了明文的参数传递方法,这种方法危险性极大,您可以对参数的传递进行加密等处理,但在此为了说明的简单,并不进行复杂的处理。

Ø         编译调式运行程序。

Ø         把调式通过的SSOLogon.aspx网页拷贝到Inforview的目录之下。例如:

C:\Program Files\Business Objects\BusinessObjects Enterprise 11.5\Web Content\Enterprise115\InfoView目录之下。

Ø         把编译生成的BOSSO.DLL文件拷贝到Inforviewbin目录之下。例如:

C:\Program Files\Business Objects\BusinessObjects Enterprise 11.5\Web Content\Enterprise115\InfoView\bin目录之下。

Ø         为了安全起见,您可以把BO网站重新启动一次。

 

在您需要单点登录到Inforview主页的网站中,使用下面的链接就可以直接登录到Inforview的主页:

…/inforview/SSOLogon.aspx?System=10.10.100.168&SSOUser=Administrator&SSOPWD=MyPassword

 

使用本方法,弥补了方法一的一些不足:方法一要求必须在外部的网站中对BO的报表进行管理,比如报表的目录,用户对报表所拥有的权限等。使用本方法,我们可以直接利用BO对报表进行分类,权限的控制等等,还可以直接在Inforview的主页中查看其他的报表、文档等信息。

posted @ 2007-05-14 21:07  南疯  阅读(6070)  评论(5编辑  收藏  举报