NCC2005 单点登录,常见问题和解决方案

发布时间 2023-05-27 14:56:32作者: 苏槿年

NCC2005 单点登录,常见问题和解决方案

设计思路

要单点登录到NCC,首先需要在服务器端向NCC服务器注册将要登录的用户的信息以及其他一些需要的信息,这些信息将被保存在NCC服务器上,通过ssoKey进行关联映射。

在完成注册信息后,客户端在登录时需要提供ssoKey,通过该值获得登录用户的相关信息,进入NCC系统。

实现过程

1、在NCC的系统注册表sm_oauth_security注册第三方系统

  • CLIENT_ID 第三方系统编码,必需项
  • CLIENT_NAME 第三方系统名称,非必需
  • CLIENT_SECURITY 第三方系统和NCC共同维护的秘钥对
  • PK_OAUTH_SECURITY 主键(可通过V0插入,也可以随便填写,不重复即可)
  • CLIENT_URL 第三方系统的url(供NCC集成访问第三方系统使用,本环节不需要)
  • CLIENT_AUTHCLASS 登录第三方系统授权类 (供NCC集成访问第三方系统使用,本环节不需要)
  • PK_GROUP非本环节使用,设置为空

2、在前台页面提供单点登录ncc的地址,完整url为http://ip:port/uap/rbac/thirdpartylogin/main/index.html?accesstoken=xxx &redirect_uri=http://ip:port/uap/rbac/thirdpartylogin/main/index.html

  • accesstoken代表登录token,具体内容会在下一步获取
  • redirect_uri表示登录成功后重定向的地址,如工作桌面地址http://ip:port/NCCloudloud/

3、单点登录前,客户端先会向第三方服务器获取accesstoken,第三方服务器则通过事先保存秘钥对,访问http://ip:port/service/genThirdPartyAccessToken进行验签和服务器ip白名单验证,获取登录token,ip白名单配置文件home\ierp\sf\nccssoConfig.xml

  • dsname 数据源名称,必需项
  • usercode NCC用户编码,必需项
  • client_id第三方系统id,即第一步在sm_oauth_security注册的系统编码,必需项
  • security第三方由共同维护的秘钥对根据给定的算法自己生成的秘钥值,必需项
  • langcode 多语语种,非必需项,为空默认中文语种
  • busicentercode 账套编码,非必需项,为空登录时会循环在数据源中查找用户

4、单点登录时,NCC服务器会校验accesstoken,token正确则重定向到redirect_uri

注意:

http://ip:port/uap/...是开发环境下地址,如在正式或者测试环境,地址应为http://ip:port/nccloud/resources/uap/...

常见问题

1、验签时接口报401错误

  • 检查白名单是否配置了IP,这里的IP是第三方服务器的IP;如果配置了IP还是不行,可以直接解除限制用*.*.*.*代替即可;
  • 检查秘钥是否填写正确,秘钥尽量用简单的一些,防止接口中编码时发生错误;如果还是不行,不填秘钥也是可以的,在注册表里sm_oauth_security将秘钥设置为空;但是这种方式不够安全,慎用

2、拿到了accesstoken,但是登录时提示未检测到第三方系统

  • 检查IP白名单是否配置,
  • 一个accesstoken只能使用一次,而且还有时间限制

3、登录时显示的是空白页,或页面缺失

  • NCC2005版本缺少一个补丁包,需要打补丁后方能正常访问

4、秘钥匹配不正确

  • sm_oauth_security表里的CLIENT_SECURITY 值,与genThirdPartyAccessToken接口里的参数security不是同一个值;security是通过CLIENT_SECURITY 通过给定的算法加密出来的,具体的加密方法可以跟一下代码看一下