三一重工门户/商业智能项目培训文档
ASP.NET首页登录模块的修改
1、 获得cookie
SAP门户发送到客户端的Cookie名称是“MYSAPSSO2”,这个Cookie是隐藏的,只有把这个页面部署在Portal里之后,才可以读到Cookie。读取Cookie的示例代码:
-------------------------------------------------------------------------------------------------- Cookie[] all_Cookies = request.getCookies(); String ticket = \ int i = 0;
if(all_Cookies==null) out.println(\ else{
for(i=0;i
if(\ ticket = all_Cookies[i].getValue(); break; } }
}
-------------------------------------------------------------------------------------------------- 获得ticket的值以后,由后台的程序进行解析。
2、 解析cookie的值
解析需要的材料:
jil@neusoft.com
三一重工门户/商业智能项目培训文档
(1) 两个动态链接库:
sapssoext.dll 需要在windows环境下注册,命令:regsvr32 sapssoext.dll。 sapsecu.dll 和解析类放在同一个目录下。 (2) 门户的证书:
解析算法需要利用门户导出的证书作为解析时的公钥。
导出位置:System Administration?System Configuration?KeyStore Administration 下载.pse格式的证书,保存在本地,供使用。
解析方法示意:
public Object[] evalLogonTicket(string ticket, string pab, string pab_password) {
Object[] parms = { ticket, pab, pab_password }; // invoke the main method to check the ticket if(MyType==null)
return new Object[7]; else
return (Object[])MyType.InvokeMember(\, System.Reflection.BindingFlags.InvokeMethod,null,MyObj,parms);
}
详细解析方法,见ssosample.cs
jil@neusoft.com
三一重工门户/商业智能项目培训文档
解析结果
jil@neusoft.com
三一重工门户/商业智能项目培训文档
6利用SAP Logon Ticket集成J2EE系统 6.1原理与流程
原理与流程与集成.Net系统类似。
6.2实施过程
上传par包并建系统
用管理员身份登陆portal,依次选择System administration->support->Support desk->portal runtime->Administration Console,根据par包所在的路径选择com.sap.portal.howtos.webapp.par包,并upload;如下图:
根据par包建系统
根据刚才上传的par包建立system,并根据J2EE Application相应的路径配置参数; 需配置的主要参数:
Name of server: j2eetest.neusoft.com Port number: 8888(我的Tomcat端口) URI:/ticket/MyJsp.jsp
Logon Method: SAPLOGONTICKET User Mapping Type: admin,user Http Request Method:HTTP post 如下图:
jil@neusoft.com
三一重工门户/商业智能项目培训文档
建系统别名,配置permission
利用系统建iView
选择“New From Portal Archive” 创建iView
选择portal application “com.sap.portal.appintegrator.sap” 选择”Generic”,然后”Next”; iView属性设置
System: 刚才建的系统的别名
URL template:
URL Template fragment for Single sign-on (sso2) : MYSAPSSO2=
J2EE Application服务器端获取SSO2Ticket
Cookie[] all_Cookies = request.getCookies(); String ticket = \ int i = 0;
if(all_Cookies==null)
out.println(\ else{
for(i=0;i
if(\ ticket = all_Cookies[i].getValue();
jil@neusoft.com
三一重工门户/商业智能项目培训文档
break; } } }
解析需要的材料
Dll文件:sapsecu.dll、sapssoext.dll文件(SAP提供)提供SAP解析算法。 verify.pse文件,portal中keystore中下载,公钥文件 SSO2Ticket类,调用dll文件完成解析。(已实现此类) 调用SSO2Ticket类中的方法解析ticket
SSO2Ticket ticketParse=new SSO2Ticket(); ticketParse.parseTicket(ticket); 获取用户名
ticketParse.getUser(); ticketParse.getPortalusr()
注:SSO2Ticket类已经完成,直接调用即可。
解析结果
jil@neusoft.com