一、实现方案说明

1、主要步骤:

外部系统实现单点登录NC6x,在外部系统进行登录验证,直接通过用户名访问NC,主要有下面几个步骤:

(1)使用用户名注册,获取注册码Key,请求url格式:

http://host:port/service/ssoRegServlet?userCode=usercode&busiCenter=001

通过用户名参数请求该url,nc服务端会返回ssoKey值,请求参数还可以跟其他参数,如下:

userCode:指定用户编码,该参数必须提供,不能省略;

ssoKey:指定用户登录信息的键值,并在登录时提供该值,要求唯一,如果没有提供该值,NC会生成一个ssoKey并在返回的Servlet流中输出该值。

busiCenter:指定用户所属的帐套编码,该值可以忽略。如果忽略,并且在多个帐套中都存在userCode用户,那么会让终端用户选择帐套。

groupCode:指定登录的集团编码,该值可以忽略。

langCode:指定登录的雨中,可以忽略,默认为中文。

(2)单点登录NC系统访问url基本格式为:

登录IE端:

http://host:port/loginnc.jsp?ssoKey=key

登录UClient端:

uclient://start/http://host:port/?ssoKey=key&uiloader=nc.login.sso.ui.SSOLoader

其中:url中的key就是第1步中获得的ssoKey值

(3)配置外部单点登录nc的信任ip:

配置文件位置:&{NCHOME}\ierp\sf\ssoConfig.xml

<string></string>标签中添加信任ip

<?xml version="1.0" encoding="UTF-8"?><SSOConfig><regTimeOut>200</regTimeOut><authenticator classname="nc.sso.bs.DefaultSSOAuthenticator"><listParam key="IPAddress"><string>172.20.5.111</string><string>172.20.1.11</string><string>127.0.0.1</string>
</listParam>  </authenticator>
</SSOConfig><string>172.20.5.111</string><string>172.20.1.11</string><string>127.0.0.1</string>
</listParam>  </authenticator>
</SSOConfig>

(4)替换文件和增加文件

替换 ${nchome}\webapps\nc_web\login.jsp

替换${nchome}\webapps\nc_web\WEB-INF\jsp\ncapplet.jsp

增加${nchome}\webapps\nc_web\loginnc.jsp, 如果单点登录要求外部系统只通过用户名一次握手登录需要增加该文件,如果外部系统两次握手登录NC,则通

过longin.jsp和ssoRegServlet即可实现登录逻辑,无需增加loginnc.jsp

主要逻辑图如下:

文件下载:

login.jsp

ncapplet.jsp

loginnc.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="java.net.HttpURLConnection,java.net.URL,java.net.MalformedURLException,java.io.IOException,java.io.BufferedReader,java.io.InputStreamReader"%> <script language="JavaScript">
var scheme = "<%=request.getScheme()%>"; //传输协议
var servername = "<%=request.getServerName()%>"; //NC主机地址
var serverport = "<%=request.getServerPort()%>"; //NC主机端口
//var usercode = "<%=request.getHeader("oam_remote_user")%>";//当前登录用户 NC中需存在该编码
var usercode = "<%=request.getParameter("userCode")%>";//用户编码
var account = "<%=request.getParameter("account")%>";//账套编码
var ncurloo= "uclient://start/" + scheme + "://" + servername + ":" + serverport ;
var ncurl = scheme + "://" + servername + ":" + serverport ;
var xmlHttp;
var key;    window.onload = getMHsskey;//访问门户网站的验证码地址。得到验证码
function getMHsskey(){if (null != usercode) { // 已登录//做登录处理openNC();} else {// 用户未登录alert("用户名为空,请确认");}
}//单点登录NC系统的方法
function openNC(){//获取ssokey的值doRequestUsingGET(usercode);//单点登录NC,方法延迟1s执行,等待异步请求注册ssokey的返回值setTimeout(doRequestLogin,1000);}
//在NC中注册单点登录所使用的sskey注册码
function doRequestUsingGET(usercode){    createXMLHttpRequest();   var queryString=ncurl+"/service/ssoRegServlet?busiCenter="+account+"&userCode="+usercode; xmlHttp.onreadystatechange = handleStateChange;    xmlHttp.open("GET",queryString,false);    xmlHttp.send(null);
}//将得到的NC注册码赋值到变量key,用于单点登录NC系统使用
function handleStateChange(){   if(xmlHttp.readyState==4){   if(xmlHttp.status==200){          key=xmlHttp.responseText;}else{//key=xmlHttp.responseText;}}   }//创建ajax异步请求对象
function createXMLHttpRequest(){   var code = usercode;if(window.ActiveXObject){   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   }else if(window.XMLHttpRequest){   xmlHttp=new XMLHttpRequest();   }   }//单点登录NC
function doRequestLogin(){var url = ncurloo+"/?ssoKey="+key+"&uiloader=nc.login.sso.ui.SSOLoader";location.href = url;setTimeout(closeWindow,1000);//唤起UClient后关闭浏览器页签
}function closeWindow(){var browser = navigator.userAgent.indexOf("Firefox");if(browser>-1){location.href = "about:blank";}else{window.opener = null;window.open("", "_self", "");window.close();}
}
</script>
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
</body>
</html>

用友NC6x单点登录实现——跳转到浏览器或Uclient相关推荐

  1. springboot接入cas单点登录后跳转不到我需要跳转到页面_单点认证的一点心得

    最近项目要接入一批项目,接入必然涉及单点认证,在对接的单点认证主要分为几类,oauth .cas.还有一些其他的. 其实主要分为2类: 一类对方提供登录接口,我们做登录页面,用户输入用户名和密码,我们 ...

  2. 单点登录无限跳转的问题

    场景 oa是主系统,crm是子系统.子系统对接oa系统的单点,从单点界面点crm图标,跳转到crm应用.crm应用前后端分离,后端提供鉴权接口getToken(),前端调用鉴权接口, 如果鉴权成功,登 ...

  3. 写了一个 SSO 单点登录的代码示例给胖友!

    发危~ " 摘要: 原创出处 http://www.iocoder.cn/Spring-Security/OAuth2-learning-sso/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1 ...

  4. 从前端开发者看待用友建筑云移动端单点登录与报错原因

    本文对单点登录有一个初步介绍,重点叙述前端开发者使用单点登录可能遇到的问题,以及问题分析! 方案全部来源于用友建筑云,本文仅用于内部分享,所以不过多介绍方案实现. 原文来自博客 单点登录介绍 APP在 ...

  5. Spring Security OAuth2 单点登录

    1. 概述 在前面的文章中,我们学习了 Spring Security OAuth 的简单使用. <Spring Security OAuth2 入门> <Spring Securi ...

  6. 单点登录SSO:图示和讲解

    目录 概述 示例运行效果动画 跨域Web SSO时序图 代码截图 几个基本概念 涉及的站点和页面 重点理解:单点登录的核心步骤 敢说最准确的单点登录图示,因为: 我严格对照所画时序图的每个步骤,开发了 ...

  7. SSO(单点登录)介绍

    标签:sso iplas ##一.SSO(单点登录)介绍 SSO英文全称Single SignOn,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将 ...

  8. JavaWeb跨域单点登录

    B/S架构前后端分离项目实现跨域单点登录方案设计 项目需求: 1.前后端分离项目,由后端实现会话管理,同时校验用户权限: 2.多个项目单点登录,允许跨域访问: 3.预留CS架构客户端点击按钮打开浏览器 ...

  9. 终于把单点登录完整流程图画明白了!史上最完整的CAS单点登录完整图解!

    CAS单点登录 本人也是初次接触CAS,有问题还请指正. 什么是单点登录 比如说百度,在浏览器中登录百度贴吧之后,百度的其他网站也同步登录了:退出百度贴吧之后,百度的其他网站也同步退出了. 简单来说就 ...

  10. 单点登录是如何实现的?

    单点登录是一种简单且强大的.以标准协议为基础的解决方案,可以为企业的用户安全提供高级别保障,是企业所采用的IAM(身份及访问管理)解决方案中一个非常基础的组成部分. 对于现代化的企业而言,身份及访问管 ...

最新文章

  1. html5类选择器选择权重,Python Html5和CSS3的新增功能:CSS权重与CSS3新增选择器
  2. 解决pom文件第一行报错(unknown)-亲测有效
  3. lnmp mysql主从_LNMP linux下mysql主从复制 _好机友
  4. antd vue表单上传文件_Vue编译出静态文件上传七牛CDN
  5. kafka 消息顺序写入服务器
  6. 马云:大部分失败企业都是因为不够专注
  7. 2.OAuth 2实战 --- OAuth 之舞
  8. Docker设置容器CPU、memory、磁盘IO资源限制
  9. 西南科技大学OJ题 顺序表上数据的划分问题的实现1102
  10. 天线远场定义_暗室静区及天线近场和远场的介绍
  11. 大米云主机首批优秀体验师新鲜出炉——综合篇
  12. 二叉树查找结点及父结点
  13. linux的yum是什么意思,yum是什么?(linux命令)
  14. MSP MCU I2C入门指南
  15. Android 左飞字幕的实现(带描边)
  16. win7不显示移动硬盘_如何在移动硬盘中安装win10系统?
  17. 【图片上传与图片显示】 SpringBoot ajax (跨域问题)
  18. 如何提取伴奏?1分钟让你知道伴奏提取软件手机版有哪些
  19. MATLAB中regress函数用法(多元线性回归)
  20. 晶晨半导体---软开

热门文章

  1. size函数 matlab 含义,size()函数的使用
  2. html参数转义字符,Html转义字符 获得请求参数
  3. 苹果CMS v10详细安装教程+官方原版源码分享
  4. 爱奇艺、芒果TV相继涨价,长视频开启新一轮“加价不加量”游戏?
  5. android 菜鸟面单打印_菜鸟Android
  6. UI设计和平面设计有什么区别哪个前景更好
  7. STM32电机库5.4开源注释 KEIL工程文件 辅助理解S STM32电机库5.4开源注释
  8. 中国移动计算机类行测题目,2021三大运营商春招笔试:中国移动行测练习题(2)...
  9. 小程序定制开发和模板软件的区别和优势
  10. 深入解析Windows操作系统 第4版