iTop集成SSO登录

基本思路

新建一个authent-sso扩展,除默认文件外在新建一个login.php用于充当sso回调url。基本流程为:用户选择SSO登录(或者系统判断用户为SSO用户,自动跳转),跳转到SSO登录页面,登录成功后带着token返回authent-sso/login.php,login.php中调用model.authent-sso.php的CheckCredentials函数,CheckCredentials中完成用户登录校验,用户信息获取,添加用户,登录等流程。

代码实现

触发sso验证

sso登录成功后,带着token回调login.php,如

为了在 login.php 触发authent-ssoCheckCredentials 函数,需要添加一个专门用于SSO登录的账号,可以在module配置里设置,也可以定义常量。另外还需要SSO登录成功后的默认Profile及Organization:

登录逻辑

CheckCredentials 函数里做登录校验及用户信息获取,添加用户,登录的操作:

CheckCredentials 用到的功能函数

iTop配置

为了保留多种类型的用户,不强制跳转到SSO登录页,因此需要在iTop登录页醒目的标明 如 ”SSO用户点此登录“ 的链接,可以通过语言文件实现:

优化登录

2016.7.20更新

由于绝大多数用户都通过sso登录,因此决定未认证用户之间重定向至sso以提高用户体验。只需要在model.authent-sso.php中class定义的外面判断是否登录,未登录的跳转去sso(注意请求uri为toolkit和setup时不要跳转到sso,否则将导致这两个功能不可用)。

其中参数 $_SERVER['REQUEST_URI'] 用于认证通过后重定向至登录前的链接。具体流程为记录用户登录前打开的request_uri, 作为url参数加到sso的next URL里,然后login.php就可以获取到这个uri,认证成功后直接重定向至该request_uri。

getM_TK()函数修改为:

接下来在login中处理

为了取到不带URI的app_root_url,getAppRootUrl()函数修改为:


4 thoughts on “iTop集成SSO登录

  1. 你好,我们最近在实施iTOP已经成功集成LDAP,但业务需求账号能够从其它应用直接跳转到iTOP而非LDAP. 由于我们是刚刚接触iTOP,根据你的描述,有些内容不甚明了。能否私下沟通?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注