amywu 发表于 2012-2-15 11:29:42

power-bi与OA系统集成,实现单点登陆

单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。
Power-bi前端浏览可以很好的与其他的系结合,如与OA办公系统结合,主要使用Cookie实现单点登录。
用户在单点登录服务器的登录页面中,输入用户名和密码,然后单点登录服务器会对用户名和密码进行认证。认证通过之后,单点登录服务器会和应用程序进行一个比较复杂的交互,这通常是某种授权机制。授权完成后,回到Web应用。Web应用此时就完成了成功的登录, 然后单点登录服务器会在客户端创建一个Cookie。这个Cookie是一个加密的Cookie,其中保存了用户登录的信息(如用户名和密码)。如果用户此时希望进入PowerBI前端页面,寻找客户端的Cookie,根据Cookie中保存的信息,进行登录。登录之后,重定向回到用户的应用程序。这样,就不再需要用户继续输入用户名和密码,从而实现了单点登录。
假如在OA系统中添加了一个应用项,就是Powerbi的相关菜单或者主页面,可以直接通过?传递相关的参数(用户名和密码),以实现单点登陆。
如在OA系统中加了一个Powerbi的菜单,原始的URL是:http://localhost:1845/powerbi/powerbi_default/index.aspx?username=黄奇&userpsw=123456&projid=1&aisdata=新方案1
 在这里会有一个中文转换(如果是中文的要转换成UNICOKE的形式)和加密的过程:
转换用户名:HttpUtility.UrlEncodeUnicode("黄奇")=%u9ec4%u5947
转换方案:HttpUtility.UrlEncodeUnicode("新方案1")=%u65b0%u65b9%u68481
加密登陆信息:DesktopClass.DesktopClass.Encrypt("123456", "黄奇")=7KGLau1xF+o=;

那么在OA系统中最终发布Url:http://localhost:1845/powerbi/powerbi_default/index.aspx?username=%u9ec4%u5947&userpsw=7KGLau1xF+o=&projid=1&aisdata=%u65b0%u65b9%u68481

加密解密过程:
如果可以直接调用dll,按如下步骤调用即可(dll名称为DesktopClass,加密解密函数在dll中所属类为DesktopClass)
1、首先右键项目添加DesktopClass.dll引用
2、在需要加密或解密的地方调用即可,调用格式如下:
加密:加密后字符=DesktopClass.DesktopClass.Encrypt(加密前字符 ,密钥);
解密:加密前字符=DesktopClass.DesktopClass.Decrypt(加密后字符 ,密钥);

说明:在这个过程会有一个加密和解密的函数,分别对用户名和密码进行加密和解密。加密和解密函数已经集成在DLL中了,在应用中直接调用就可以了,如果有单独需要这两个函数的代码,客户可以直接联系PowerBI。1)加密和解密中用到得密钥要一致(一般对用户的密码加密所用的密钥为用户名称)。
2)PROJECTI名称如果是中文的话,要转换成UNICOKE的形式。


http://bbs.sunwy.org/xwb/images/bgimg/icon_logo.png 该贴已经同步到 amywu的微博
页: [1]
查看完整版本: power-bi与OA系统集成,实现单点登陆