ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.55KB ,
资源ID:5919546      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5919546.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(V56 Portal单点登录及系统集成红皮书.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

V56 Portal单点登录及系统集成红皮书.docx

1、V56 Portal单点登录及系统集成红皮书Portal单点登录及系统集成红皮书NC 5.6 NC基础技术部2018-09-211.1 概念介绍 SSO(Single sign-on)即单点登录技术。它是指在多个子系统的大型应用中,用户在子系统之间进行切换时,不需要每次都重新输入用户的身份信息,从而做到一处认证,整个应用系统都能有效识别。单点登录技术的系统集成功能为当前企事业单位尤其是大型多子系统企业系统集成提供了完美的解决方案。它使得这些原有系统能够合理的集成起来,对外提供统一的界面风格和唯一的登录入口。单点登录只是一种功能概念,并没有对具体的实现方式进行定义和限制。NC-Portal的单点

2、登录方案,就是SSO技术的一种实现方式。 NC-Portal的SSO方案是基于凭证的思想设计。对于NC-Portal集成的每个第三方系统都有一个制作凭证的页面,该页面用于当前登录的portal用户输入对应的第三方系统的用户信息,在正常情况下,该制作凭证的页面最多出现一次。当用户输入的第三方系统登录信息进行验证后,会自动在portal系统的数据库中建立一对凭证槽和凭证信息,这对信息记录了portal用户在特定的portal布局和特定的portlet下,与该第三方系统的身份对应关系。当该用户之后登录portal并进入被集成第三方系统时,portal系统负责获取之前成功建立的对应第三方系统身份信息,

3、并用该身份信息进行第三方系统的身份认证。这一切的操作对当前登录用户来说都是透明的,他们看到的是没有输入任何身份信息而以正确的身份进入了第三方系统。另外,在用户每次登录第三方系统时,都会根据第三方系统的要求进行身份认证,因此这个登录过程是安全的。对于NC-Portal来说,对Web系统的集成提供了完善的支持和解决,对Web系统的集成,目前有大小之分。集成一个单独的系统如NC、IUFO、BO、OA系统采用单独的一个布局存放(当然,该布局也是由一个portlet组成),这些Web系统称为“大”系统。另外,还存在一些集成第三方系统的“小”portlet,如NC待办事务Portlet、NC报表Portl

4、et、IUFO报表Portlet等,这些是以“小”Portlet的形式出现的。他们主要提供一些对集成系统的辅助功能,如对NC待办事务的提取、对IUFO报表信息的提取,这两种方式功能侧重点略有不同。1.2 API介绍当第三方系统与Portal进行集成时,必须实现Portal要求的单点集成接口nc.bs.portlet.IWebAppLoginService。该接口负责完成生成凭证的过程、定制生成凭证所需要用户提供的信息域以及提供用户登录时的转向URL,在制作凭证和提供用户转向URL时需要根据第三方系统的需要进行必要的用户认证。该方法进行凭证的制作:public PtCredentialVO cr

5、edentialProcess(HttpServletRequest req, SSOProviderVO providerVO) throws PortletLoginException;req:http请求,通过getParameter方法可以获取用户输入的单点登录信息,通过该信息构造凭证。providerVO:该系统在sso-provider.xml中配置的单点信息可以从该vo中获取。该方法获取生成凭证所需用户提供的信息域public ExtAuthField getCredentialFields(HttpServletRequest req, SSOProviderVO provid

6、erVO, PtUserVO userVO, PtCredentialVO credential) throws PortletLoginException;req:http请求,通过getParameter方法可以获取用户输入的单点登录信息。providerVO:该系统在sso-provider.xml中配置的单点信息可以从该vo中获取。userVO:当前portal用户的信息。credential:如果该用户已经拥有登录该系统的凭证信息,可以从该vo中获取原来的凭证信息该方法获取最终进入系统的urlpublic String getGateUrl(HttpServletRequest re

7、q, HttpServletResponse res, PtCredentialVO credential, SSOProviderVO providerVO) throws PortletLoginException;req:http请求,可以从该请求中获取需要的请求变量值。 credential: 从该凭证vo中获取关联好的凭证信息,可以在返回最终的url前对该信息进行再次的校验。providerVO:该系统在sso-provider.xml中配置的单点信息可以从该vo中获取。该方法用于用户登录信息校验public String verifyUserInfo(HttpServletRequ

8、est req, PtCredentialVO credentialVO, SSOProviderVO providerVO) throws PortletLoginException;req:http请求,可以从该请求中获取需要的请求变量值。 credentialVO:从该凭证vo中获取关联好的凭证信息,可以在返回最终的url前对该信息进行再次的校验。providerVO:该系统在sso-provider.xml中配置的单点信息可以从该vo中获取。该方法用于获取集成系统指定节点的登陆URLpublic String getNodeGateUrl(HttpServletRequest req,

9、 HttpServletResponse res, String nodeId, PtCredentialVO credential, SSOProviderVO providerVO) throws PortletLoginException;req:http请求,可以从该请求中获取需要的请求变量值。 credential:从该凭证vo中获取关联好的凭证信息providerVO:该系统在sso-provider.xml中配置的单点信息可以从该vo中获取nodeId:指定节点的ID1.3 开发细节说明 在使用NC-Portal集成第三方系统时,主要实现IWebAppLoginService接口

10、,下面详细介绍IWebAppLoginService接口。1.3.1 接口方法实现说明public PtCredentialVO credentialProcess(HttpServletRequest req, SSOProviderVO providerVO) throws PortletLoginException;该方法用于制作Portal用户和第三方系统用户间的凭证。由于在getCredentialFields方法中已经指定了登录时需要验证的各个字段,所以在该方法的实现中要获取各个字段的值,代码如下:PtCredentialVO credentialVO = new PtCreden

11、tialVO();String userId = req.getParameter(userid);String password = req.getParameter(password);credentialVO.setUserid(userId);credentialVO.setPassword(password);/ 用户校验verifyUserInfo(req, credentialVO, providerVO);return credentialVO;verifyUserInfo(req, credentialVO, providerVO) 实现了 public String ver

12、ifyUserInfo(HttpServletRequest req, PtCredentialVO credentialVO, SSOProviderVO providerVO) throws PortletLoginException接口该方法用于用户登录信息校验,如果用户登录信息不合法则抛出异常,具体代码如下: String registryUrl = providerVO.getValue(registryUrl);StringBuffer parameters = new StringBuffer(username= + credentialVO.getUserid();parame

13、ters.append(&password= + credentialVO.getPassword();String returnFlag = null;try returnFlag = sysRegiste (parameters.toString(), registryUrl); catch (Exception e) Logger.error(e, e); throw new PortletLoginException(e.getMessage(); if(returnFlag != null & returnFlag.equals(failure) throw new PortletL

14、oginException(BO用户验证失败,用户名或密码有误!);else return returnFlag;sysRegiste是个私有方法,我们提供了一种参考实现,可以直接采用。然后根据是否验证成功返回不同的字符串来处理,如果验证不成功返回字符串”0”,以我们规定的异常抛出,这样会直接在单点登录的界面上显示提示信息,如果验证成功则返回构造好的CredentialVO。 向第三方系统认证地址发送验证信息的参考实现方法如下。private String sysRegiste(String parameters, String registrUrl) throws IOException U

15、RL preUrl = new URL(registrUrl); URLConnection uc = preUrl.openConnection(); / 表明程序必须把名称/值对输出到服务器程序资源 uc.setDoOutput(true); / 表明只能返回有用的信息 uc.setUseCaches(false); / 设置Content-Type头部指示指定URL已编码数据的窗体MIME类型 uc.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 设置Content-Type头部指示指定URL已

16、编码数据的窗体MIME类型 uc.setRequestProperty(Content-Length, + parameters.length(); / 提取连接的适当的类型 HttpURLConnection hc = (HttpURLConnection) uc; / 把HTTP请求方法设置为POST(默认的是GET) hc.setRequestMethod(POST); / 输出内容 OutputStream os = hc.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeBytes

17、(parameters); dos.flush(); dos.close(); / 获取对凭证的验证结果 InputStream is = hc.getInputStream(); String returnFlag = ; int ch; while (ch = is.read() != -1) returnFlag += String.valueOf(char) ch); if (is != null) is.close(); return returnFlag; public ExtAuthField getCredentialFields(HttpServletRequest req,

18、 SSOProviderVO providerVO, PtUserVO userVO, PtCredentialVO credential) throws PortletLoginException 由于第三方系统的登录信息不尽相同,简单的系统只需要用户名/密码,有的系统在登录时可能还需要别的信息,如公司编码等,这个方法用于指定登录时需要用户录入的第三方系统的登录信息,代码实例如下ExtAuthField fields = new ExtAuthField2;fields0 = new TextExtAuthField(用户名:, userid, true);fields1 = new Pas

19、swordExtAuthField(用户口令:, password, false);return fields;这样Portal的单点登录框架会自动根据这些指定字段形成统一风格的凭证制作界面。public String getGateUrl(HttpServletRequest req, HttpServletResponse res, PtCredentialVO credential, SSOProviderVO providerVO) throws PortletLoginException 这个方法是真正形成进入第三方系统的最终URL地址。对于本身有html form表单登录的系统,在

20、单点集成时直接利用该系统已有的登录验证逻辑,只是保证将所需的参数传给集成系统即可,代码参考实现如下:String usercode = credential.getUserid();String password = credential.getPassword(); / 进行credential中的信息校验,保证信息安全String returnFlag = null;try returnFlag = verifyUserInfo(req, credential, providerVO); catch (IOException e) Logger.error(e, e); throw new

21、 PortletLoginException(e.getMessage();if(returnFlag != null & returnFlag.equals(0) throw new PortletLoginException(系统用户名或密码有误!); Map formFieldMap = new HashMap();formFieldMap.put(username, usercode);formFieldMap.put(password, password); req.getSession().setAttribute(fieldsMap, formFieldMap);String f

22、romUrl = “http:/127.0.0.1/login.jsp”;req.getSession().setAttribute(form_url, fromUrl);return /portal/html/portlets/application/form_view.jsp;return的jsp是Portal系统规定的框架级jsp,必须这么写,form_url为原来第三方系统登录页面html form表单所指向的action地址,往formFieldMap中put进的key值,必须和第三方系统原登录表单的各个字段的key值一样。如果第三方系统的登录不是基于html form表单的形式,类

23、似NC系统,那么代码的参考实现如下:String gateUrl = providerVO.getGateUrl();/ 用户校验String returnFlag = verifyUserInfo(req, credential, providerVO);String realUrl = gateUrl + returnFlag;return realUrl;这样只需最终返回进入系统的url即可。1.3.2 Porlet的配置说明单点集成类型的portlet都需要在portlet.xml进行说明,具体的配置如下: SYS Portlet SysPortlet SYS jsp_prefix v

24、iew-jsp application_view.jsp edit-jsp /pageId的值和的值一样 /application/lfwcredential.jsp?pageId=SysPortlet system_code SYS/必须和sso-prop.xml中值一样 decorator false nc.bs.portlet.WebApplicationPortlet/Portlet全类名 0 text/html view edit EN nc.bs.portlet.SpringResourceBundle SYS Portlet SYS Portlet SYS 1.3.3 SSO的配

25、置说明sso-prop.xml中需要是对单点登录系统的描述,指明该系统的单点认证类,登录信息验证地址,登录系统的URL,和系统需要的特定默认配置项等。这些配置会在portal启动时自动解析形成SSOProviderVO类,从该类中可以获取系统配置的各个单点信息。一般的配置如下: SYS SYS false registryUrl http:/127.0.0.1/verify.jsp nc.portlet.thirdintegration.Sys1Login http:/127.0.0.1/login.jspnc.impl.portal.service.SYSNodesProviderregis

26、tryUrl为第三方提供的认证jsp地址,为实现了单点认证接口的实现类,为进入第三方系统的URL,该URL并非是进入系统的最终URL,该URL还可以在getGateUrl()方法中进一步加工,nodes-class为集成系统节点默认提供类,可以有多个,为该系统设置的一些初始信息。1.3.4 认证地址registryUrl的说明registryUrl是第三方系统提供的对用户登录信息认证的地址,应由第三方系统提供,因为一般的第三方系统肯定都有用户信息验证的方法,所以该文件的实现不需要太多的代码,为了统一,Portal系统建议,第三方系统由于验证不通过返回给认证类的结果为字符串”0”。这里给出某系统

27、提供的认证代码(bovalidate.jsp)作为实现参考。% page import = com.crystaldecisions.sdk.occa.infostore.*, mon.*, com.crystaldecisions.sdk.framework.*, com.crystaldecisions.sdk.occa.security.*, com.crystaldecisions.sdk.exception.SDKException,com.crystaldecisions.sdk.occa.managedreports.IReportSourceFactory, java.util.Locale, com.crystaldecisions.report.web.viewer.CrystalReportVie

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1