NC60 单点登录方案说明文档
NC 基础技术部 李充蒲
简述
NC60 的单点登录方案和 NC5x 的单点登录方案比较相近,但是其注册和登录的 url 格式
有所变化,并且增加了一些功能,例如可以定义在注册用户信息的身份认证,可以由 NC 系统
生成 ssoKey 等等
注册用户信息的 URL 基本格式为:
http://host:port/ service/ssoRegServlet? ssoKey =key&userCode=usercode
单点登录 NC 系统的 URL 基本格式为:
http://host:port/login.jsp? ssoKey =key
单点登录配置文件路径为:
${NCHOME}\ierp\sf\ssoConfig.xml
单点登录方案详述
想要单点登录到 NC,首先需要在服务器端向 NC 服务器注册将要登录的用户的信息以
及其他一些需要的信息,这些信息将被保存在 NC 服务器上,通过 ssoKey 进行关联映射。
在完成注册信息后,客户端在登录时需要提供 ssoKey,通过该值获得登录用户的相关信
息,进入 NC 系统。
如下图所示:
注册用户登录信息
NC 系统提供了一个 Servlet 来注册用户登录信息。访问该 servlet 的 URL 格式基本为:
http://host:port/service/ssoRegServlet,其后面可以跟随多个参数,如下所示:
1.
2.
userCode: 指定用户编码,该参数必须提供,不能省略。
ssoKey: 指定映射登录信息的键值,并在登录时需要提供该值。该值要求唯一,
如果在注册时没有提供该值,NC 系统会自动生成一个 ssoKey 的值,并在返回的
Servlet 流中输出该值
3. busiCenter:指定用户所属的账套编码,该值可以忽略。如果忽略该值,并且在多
个账套中都存在 userCode 用户,那么会让终端用户选择账套。
groupCode:指定登录的集团编码,该值可以忽略。
langCode:指定登录的语种,该值可以忽略,默认为中文
4.
5.
示例:
http://host:port/ service/ssoRegServlet? ssoKey =123459483230949&userCode=zhangsan
这个 URL 表示将以用户 zhangsan 的身份登录,注册信息的键值为 123459483230949。
登录 NC 系统
在完成了用户登录信息的注册后,客户端就可以以注册的 ssoKey 值来登录 NC 系统了,
登录 NC 系统的 ssoKey 值以 URL 参数的形式提供,如下所示:
http://host:port/login.jsp? ssoKey =keyvalue。
对于前面的示例
http://host:port/ service/ssoRegServlet? ssoKey =123459483230949&userCode=zhangsan
登录时的 URL 为
http://host:port/login.jsp? ssoKey =123459483230949
单点登录配置文件详述
单点登录的配置文件路径为${NCHOME}\ierp\sf\ssoConfig.xml
该文件默认的内容如下:
200
127.0.0.1
*.*.*.*
在这个配置文件中主要可以配置两个信息
1 注册信息的超时设置
2 注册时的验证处理类
注册信息的超时设置
当用户注册完用户的登录信息后,在还没有进行登录之前,注册的登录信息将保存在
NC 系统中。在用户开始登录 NC 时,该注册信息才会从 NC 系统中被清除。
如果由于某种原因,用户没有触发登录操作,那么注册信息将在超时后,被系统自动清
除掉,这个超时的时间值的配置是在配置文件中的
标签项配置的,单位为秒。
默认值为 200 秒。
如果用户是在超时以后才登录 NC,那么登录将会失败,会提示找不到注册信息。
注册时的验证处理
由于只要向 NC 系统中注册了用户的登录信息,就可以单点登录到 NC。所以从安全考
虑,需要再注册用户的登录信息时进行权限验证。
单点登录注册时采用的验证类的配置是在配置文件中的< authenticator >标签项配置的。
通过 classname 属性指定验证类的类名,该类必须实现 nc.sso.bs.ISSOAuthenticator 接口。
public interface ISSOAuthenticator {
public void authenticate(HttpServletRequest request) throws Exception;
}
默认的验证类为 nc.sso.bs.DefaultSSOAuthenticator,该验证类将检查注册的 URL 的来源主机
的 ip 地址是否在其所配置的合法 ip 地址的范围内,如果是,则允许注册,否则,将拒绝注
册。
如果希望提供更加安全的验证处理,可以通过实现 nc.sso.bs.ISSOAuthenticato 接口并注
册在配置文件中即可
nc.sso.bs.AbstractSSOAuthenticator
AbstractSSOAuthenticator 类是一个实现了 ISSOAuthenticato 接口的抽象类,他提供了获取参
数的方法 String getValue(String key)和 String[] getValues(String key)这些参数是在配置文件中
进行配置的。所以在实现注册时的验证处理类时,如果需要能拥有获取配置文件中参数的功
能,可以直接继承 AbstractSSOAuthenticator 类。
参数的配置提供两种标签:
1. 字符串参数的配置标签
:
这类参数值可以通过 String getValue(String key)方法获取
2. 字符串数组参数的配置标签
:
value1
value2
value3
这类参数值可以通过 String[] getValues(String key)方法获取