---
navTitle: 某军工集团CA单点登录
indexTitle: 某军工集团CA单点登录
---
# 某军工集团CA单点登录

某军工集团企业内部员工登录系统时都需要使用随身携带的usbkey等， usbkey中有用户个人的身份信息（私钥），登录过程是这样的：

1. 用户插入usbkey
2. 用户打开ie浏览器（或360的ie核）访问系统。（必须使用ie，是因为读取usbkey需要一个本机安装好的dll activex控件）
3. 系统显示一个空白的html页面，其中有js脚本自动使用ActiveX读取usbkey信息，并将从服务器获取的一个随机数字用usbkey中的私钥签名后发给服务器好让服务器验证用户的身份
4. 服务器端验证身份信息时需要连接后端的ca服务器去验证
5. 服务器验证通过后即登录成功（服务器端会进行本服务器的免密码登录，将用户信息和权限信息初始化到session中）
6. 客户端定位到登录成功的页面或显示登录错误信息
7. 如果应用需要高级浏览器，那么可以在IE进行CA登录成功后，使用360浏览器的极速内核打开目标页面（比如门户），如果CA登录失败，则在IE中显示错误信息

实现分2个主要步骤：

\[\[toc]]

## 实现个性化登录页面和前端逻辑

总体思路是：

1. 扩展登录页面模版扩展点，实现一个新的登录页面，并附带前端登录页面逻辑。
2. 在系统设置的登录页面设置中，选择扩展提供的模版。

## 实现后端逻辑

总体思路是：

1. 扩展sso扩展点，实现一个新的SSOProvider类，接受passport的登录方式。
2. 在系统设置的单点登录设置中，选择扩展提供的新的单点登录方式。
