身份验证与安全,含 SSO

谁能进来、怎么进来,由两个地方决定。安全页面管的是用用户名和密码登录。SSO 页面接入的是目录服务或外部登录服务。两者可以同时启用。

1

用用户名和密码登录

开始之前: 这张卡片上的设置在“Settings → Security”里。只有管理员能修改它们。其他被授予这个页面的人看到的是只读状态。

出厂设置下,每个人都用用户名和密码登录。电子邮件地址也可以代替用户名。如果设置了邮件发送,表单下面会出现“Do you need a password reset?”链接。邮件发送属于 Professional。

登录之后,浏览器会拿到一张有时限的通行证。有效期由“JWT token timer”卡片决定。允许填 1 到 24 小时,建议 12。过期之后,本人必须重新登录。

“Password policy”卡片适用于系统里设置的每一个密码。创建账号时、本人自己改密码时,以及管理员重置密码时,它都会被执行。

您可以设定最小长度、必须出现哪几类字符、密码多少天后过期,以及有多少个旧密码继续被禁用。天数和禁用列表填 0 表示“关闭”。

关于大小写的规则不会把任何语言挡在门外。很多书写系统根本没有大小写之分,来自其中的一个字符本身就同时满足这两条规则。

只通过 SSO 或目录服务登录的账号没有本地密码,所以过期规则对它们不适用。它们的规则在提供方那边。如果一个已有账号被关联到 SSO,同时仍保留着自己的密码,那么过期规则和密码策略对这个密码继续有效。

“2FA Settings”卡片决定谁必须使用双因素登录。在“Two-factor requirement”下,您从四个级别中选一个:“Off”、“Administrators only”、“Administrators and agents”或“Everyone”。“Everyone”也包括客户。新安装从“Administrators only”开始。以前就有的安装在更新后保留原来的设置。

下一次登录时还没有第二因素的人,会设置一个。系统会显示一个给身份验证器 App 用的二维码,以及同一个可以手工输入的密钥。输入第一个验证码之后,第二因素就生效了。点“Set up later”可以推迟设置,登录会不经设置继续进行。最多可以推迟 7 天,从第一次推迟算起。按钮下面的一行显示剩余天数。之后设置就是必须的。

紧接着会出现十个恢复码。每一个都可以代替 App 里的验证码使用一次。它们只显示这一次。您用“Copy”或“Download”保存它们。“Download”总是可用。“Copy”通常也可用。

如果有人把设备和恢复码都弄丢了,由管理员来帮忙。在用户列表里,那个划掉的盾牌按钮会重置此人的双因素登录。他在下次登录时重新设置。

验证码依赖服务器时钟。时钟不准,任何验证码都不会被接受。同一张卡片上的“Check now”按钮会把服务器时间和一个公共时间源做比对。

如果有人通过外部登录服务登录,系统不会索要验证码。第二因素已经由提供方检查过了。目录服务登录不一样:那里上面那条规则依然适用。

更多内容见这张卡片: 在自己的个人资料中使用双因素登录

登录页,带“Username”和“Password”两个字段以及“Sign in”按钮。
红色边框落在这两个字段和按钮上。上面那个字段也接受电子邮件地址。以原始尺寸打开图片
“JWT token timer”卡片,带填写小时数的字段。
红色边框落在这个字段上。它接受 1 到 24 之间的值。以原始尺寸打开图片
“Password policy”卡片,带最小长度、字符类别、过期和禁用列表。
红色边框落在三个数字字段上。它们之间的复选框决定必须出现哪几类字符。以原始尺寸打开图片
“2FA Settings”卡片,“Two-factor requirement”下有四个级别。
红框框住四个级别。选中的是“Administrators only”,和新安装一样。以原始尺寸打开图片
设置界面,带二维码、可手工输入的密钥,以及填第一个验证码的字段。
上面的红框框住密钥。它和上方的二维码是同一个东西,摄像头读不出来时可以用它。下面的红框框住“Set up later”和剩余天数。以原始尺寸打开图片
分两列排列的十个恢复码,下方是“Copy”和“Download”。
红框框住恢复码和两个按钮。恢复码只出现这一次。图中的恢复码来自测试系统,没有任何价值。以原始尺寸打开图片
用户列表,带重置双因素登录的按钮。
红色边框落在 Marco Rossi 那一行里划掉的盾牌上。点一下,他的 App 和恢复码就都作废了。以原始尺寸打开图片
2

在自己的个人资料中使用双因素登录

每位用户都可以为自己的账户打开双因素登录。这对每个角色都适用,即使“2FA Settings”卡片没有要求。打开侧边栏左下角的用户菜单,选择“Profile picture”。同一页上有“Two-factor authentication”区域。

这个区域显示双因素登录是否已打开。关闭期间,那里有“Turn on”按钮。它会先要求输入您的密码。然后出现给身份验证器 App 用的二维码,以及同一个可以手工输入的密钥。输入 App 的第一个验证码之后,第二因素就生效了。

紧接着会出现十个恢复码。请用“Copy”或“Download”保存。“I have saved my codes”会关闭列表。列表只显示这一次。

双因素登录打开期间,这个区域显示还剩多少个恢复码。“New recovery codes”会生成十个新恢复码。旧的恢复码随即失效。“Turn off”会再次关闭双因素登录。两个按钮都要求输入 App 里当前的验证码。那里不接受恢复码。

如果“2FA Settings”卡片要求您的角色使用双因素登录,就没有“Turn off”。区域里有一行文字说明这一点。

错误的密码或错误的验证码都算作一次失败的登录。所以防止密码被猜出来的保护在这里同样有效。打开和关闭都会记录在安全日志里。如果管理员关闭自己的双因素登录,日志会发出警报。

只通过外部登录服务登录的账户,看到的是一句话,而不是按钮。第二因素由它们的服务提供方负责。来自目录的账户在第一步输入自己在目录中的密码。

更多内容见这张卡片: 用用户名和密码登录, 安全日志

个人资料中的“Two-factor authentication”区域,带状态和“Turn on”按钮。
红框框住状态和“Turn on”。这里双因素登录还没有打开。以原始尺寸打开图片
点“Turn on”之后的第一步:“Password”输入框,以及“Continue”和“Cancel”。
红框框住密码输入框和“Continue”。只有输入正确的密码后才会出现二维码。以原始尺寸打开图片
3

防止密码被猜出来

这项保护不需要任何设置就在运行,没有什么要打开的。相关说明写在“2FA Settings”卡片里。

它分两级。同一个账号连续五次登录失败之后,发起请求的那个地址会被暂停。暂停最迟在这几次尝试中的第一次之后 15 分钟结束。从任何其他地址访问,这个账号立刻还能用。

这一点很重要。否则,任何知道登录名的人都能用五个错误密码把同事锁在外面。他连密码都不需要。

第二级针对账号本身。20 次失败之后,账号会被锁定 15 分钟。由于单个地址最多只能贡献其中五次,这需要用上好几个地址。

一次成功登录会把两个计数器都清零。服务器重启之后,地址暂停会消失,账号锁定则保留。通过目录服务登录也适用同样的计数器。目录服务连不上不算一次失败。如果工单系统里还没有这个名字的账号,就只适用地址暂停。

在用户列表里,这样被锁定的账号带着“temporarily locked”标记。它仍然留在列表里。15 分钟之后,标记会自己消失。

您不必等。同一行里有一个开着的挂锁按钮。它会立刻解除锁定,并把两个计数器都清零。

这和“Archive”不是一回事。那个按钮会把账号彻底停用,而且只有它会占用或释放员工坐席。

“2FA Settings”卡片里关于防止密码被猜出来的说明。
红色边框落在这段说明上。它点出了两级:先是地址,最后才是账号。以原始尺寸打开图片
用户列表,带“temporarily locked”标记和解锁按钮。
红色边框落在标记和开着的挂锁上。挂锁只出现在确实有锁要解的那一行。以原始尺寸打开图片
4

安全日志

开始之前: 日志位于“Settings → Security log”。默认只有管理员能看到。要给其他角色开放,就在“Permission concept”卡片中授予“Security log”权限。这个权限不能授予客户。

安全日志记录两类事件。“Sign-in”区域包含失败的登录、被锁定的账号、锁定期间的登录尝试、被拒绝的双因素验证码和密码更改。这适用于用密码、通过目录和通过 SSO 的登录。

“Administration”区域显示谁改了什么。范围包括账号、角色、权限、安全设置和归档。日志的每次导出也会记在这里。

成功的登录只在两种情况下记录。第一种是管理员。第二种是同一账号有过失败尝试之后的登录。客服人员或客户的普通登录不会进入日志。这个日志不是考勤表。

如果有人用不存在的名字登录,记录中会写“unknown account”。系统不保存输入的名字。有时那其实是输错了栏位的密码。

登录事件保存 IP 地址和浏览器。管理操作保存执行者,但不保存 IP 地址。密码、验证码以及工单或邮件的内容从不进入日志。

页面先显示最新的记录,每页 50 条。“Filters”卡片用来缩小列表。“Area”选择登录或管理,“Event”选择一种事件。“Person”在操作者和受影响者的名字中搜索。“From”和“To”限定日期。“Failures only”隐藏所有成功的记录。

筛选条件要点击“Apply”之后才生效。“Reset”会把它们清除。

“Export CSV”和“Export PDF”下载的正是筛选条件所显示的内容。每个文件最多包含 10,000 条记录。如果符合筛选条件的记录更多,导出按钮旁会有提示说明。PDF 使用你的语言,并在顶部写明筛选条件和时间段。日期和时间采用“Settings → General Settings”中设置的格式。

CSV 文件始终是英文,时间采用 UTC。这样程序可以不受语言影响地读取它。每次导出本身也会以“Security log exported”记入日志。

有六种事件会触发警报。分别是失败尝试后被锁定的账号、被改为“Admin”的角色、直接以“Admin”角色创建的账号,以及管理员的双因素登录被重置。此外还有从当前数据中移除的已归档工单,以及管理员在失败尝试之后的登录。

出现警报后,拥有该权限的每个人都会在每个页面顶部看到一条黄色横幅。横幅显示自上次查看日志以来的警报数量。链接“Open security log”通往日志。打开日志后,横幅就会消失。第一次查看之前,它统计最近七天的警报。

此外,每个拥有该权限并有邮箱地址的有效账号都会收到警报邮件。系统每 15 分钟汇总一次警报,每人发送一封邮件,而不是每个事件一封。邮件写明事件、受影响的人和时间。邮件中不含 IP 地址。警报邮件属于 Professional。

夜间执行会删除旧记录。期限位于“Settings → Security”的“Data protection”卡片中的“Security log retention”区块。登录事件默认保留 90 天,可设置 7 到 365 天。管理操作默认保留 12 个月,可设置 1 到 120 个月。

每个期限都有自己的开关:“Delete old sign-in events”和“Delete old administrator actions”。开关关闭时,这些记录会保留。“保留期限”卡片介绍夜间执行。

在数据访问请求中,当事人会收到其作为操作者或受影响者的每条记录。IP 地址和浏览器只随本人触发的记录提供,例如本人的登录。当事人被匿名化后,系统会删除其登录事件。其管理操作会保留。其中的名字会替换为占位名。

给作为运营方的你一条提示:成功的登录只在管理员登录时以及失败尝试之后才进入日志。即便如此,日志仍会显示谁在何时做了什么。因此,在设有职工代表机构的公司里,这个日志属于需要共同决定的事项。

更多内容见这张卡片: 防止密码被猜出来, 保留期限

带有“Filters”卡片和记录列表的“Security log”页面。
红框落在 Lena Chen 账号被锁定的那一行上。下面是导致锁定的失败尝试,每条都带有 IP 地址。图中的记录来自测试环境。以原始尺寸打开图片
开启了“Failures only”的“Filters”卡片、两个导出按钮以及最早的几条失败记录。
红框落在“Failures only”和两个导出按钮上。导出会沿用这里设置的筛选条件。以原始尺寸打开图片
仪表板上方的黄色横幅,显示安全事件数量和链接“Open security log”。
红框落在通往日志的链接上。这里是 Lena Chen 账号被锁定触发了警报。以原始尺寸打开图片
“Security log retention”区块,含两个开关以及天数和月数。
红框落在两个期限上。图中显示的是默认设置:90 天和 12 个月。以原始尺寸打开图片
5

通过目录服务或外部服务登录(SSO)

仅 Professional

开始之前: 相关设置在“Settings → SSO Settings”里。没有配置好提供方时,登录页上什么都不会变。

最上面是总开关“Enable single sign-on”。它关着的时候,登录仍然走用户名和密码。您在它下面配置的一切都会保存下来,只有把它打开才会生效。

“Active Directory / LDAP”卡片接入本地部署的目录服务。您填入服务器、搜索基准、用来找到某个人的过滤条件,以及电子邮件地址和姓名对应的字段。

用于查询的账号是可选的。没有它,系统会以匿名方式查询。某个人的密码只用于向目录服务做绑定验证,从不保存。

目录服务本身不带第二因素。如果安全页面要求双因素登录,这些人同样会被索要第二因素。

“Identity providers”卡片装着外部登录服务。每一个都有自己的磁贴,登录页上也有自己的按钮。“Add provider”新建一个。

在“Provider type”里选择类型。“Generic OIDC Provider”适用于 Google Workspace、Microsoft Entra ID、Okta、Keycloak、Auth0 或 Ping Identity 这类服务。“SAML 2.0 Provider”适用于同样这些厂商,只是改走 SAML 接入。

旁边还有六个地区性服务:LINE、Kakao、Naver、WeChat、WeCom 和 DingTalk。它们的地址已经预填好,在字段里显示为灰色文字。

“Display name”里填的名字之后会出现在按钮上。旁边的开关只对这一个提供方生效。

回调地址要按这个顺序来做。先只填一个名字,点“Save provider”。系统这时才知道这个提供方的编号,并在“Redirect URI”下面显示完整的地址。这个地址由本安装的公开地址生成,也就是保存在“Settings → Security”里的那个地址。系统在有人登录时用的正是这个地址。

您把这个地址复制下来,在提供方那里登记。它在那边必须一个字符不差地对上。作为交换,提供方会给您一个 ID 和一个密钥,您通过“Edit”把它们填到这里。

“Allowed e-mail domains”字段限定谁可以通过这个提供方进来。留空表示允许所有域名。

如果某个提供方还缺东西,它的磁贴上会带红色的“Incomplete”标记。它这时不会出现在登录页上。旁边的文字会说明这种类型需要哪些字段。

已经配置齐全的提供方,在总开关关着时仍然不会出现。磁贴上会用一行黄字说明这一点。

如果您的许可证退回到 Basic,通过 SSO 和目录服务登录仍然可用。这时在本页上您只能关闭提供方和目录服务。登录尝试的日志仍然可以查看。

“Single sign-on”卡片,带总开关。
红色边框落在总开关上。它关着的时候,就只剩用户名和密码登录。以原始尺寸打开图片
“Active Directory / LDAP”卡片,字段已填好。
红色边框落在服务器、搜索基准和搜索过滤条件上。图中的值来自测试系统。以原始尺寸打开图片
两个提供方磁贴,一个已配置好,一个带着“Incomplete”标记。
红色边框落在这两个磁贴上。上面那个已经完整,只等总开关打开。下面那个缺少提供方的地址。以原始尺寸打开图片
“Add provider”对话框,带类型、显示名称、开关和提供方地址。
红色边框落在地址字段上。它下面的“Quick fill”会为常见的提供方预填内容。花括号里的东西要先替换掉。以原始尺寸打开图片
已保存的提供方的对话框,显示出完整的回调地址。
红色边框落在回调地址上。它保存之后才会生成,开头是您自己安装的地址。以原始尺寸打开图片
6

首次登录时创建的账号,以及日志

仅 Professional

“Automatically create accounts on first sign-in”开关和总开关在同一张卡片里。它默认是打开的。

有人第一次通过某个提供方登录时,系统会先找有没有已经属于该提供方的账号。找不到,就新建一个。

新账号拿到“Customer”角色,不属于任何团队。客户不需要团队成员身份就能创建工单,因此可以马上开始用。

客户在两个版本里都不限量,所以这样建出来的账号不占用员工坐席。谁要成为客服人员,之后在用户管理里改角色。

如果已经存在一个电子邮件地址相同的账号,两者会被关联起来。只有提供方报告该地址已验证时才会这样做。如果没有验证,登录会被拒绝。

如果您把它关掉,就只有已经有账号的人能进来。其他人都会被挡回去。

最下面的“Recent sign-in attempts”卡片显示通过 SSO 和目录的最近 100 条登录事件。它们来自安全日志。失败的尝试总会出现在其中。成功的登录只在管理员登录时以及同一账号有过失败尝试之后才出现。所以并不是每次登录都会出现在列表里。

每一行写明时间、提供方、结果和来源地址。失败的尝试旁边还写着原因。“User”列显示账号的名字。没有账号时,显示提供方报告的地址,否则显示“unknown account”。系统不保存输入的名字。

用用户名和密码登录不会出现在这张表里。那不是 SSO。你可以在安全日志中找到它。

默认情况下,记录会在 90 天后删除。卡片标题下方的句子会写出所设的期限。这项设置在“保留期限”卡片中说明。

更多内容见这张卡片: 安全日志

“Automatically create accounts on first sign-in”开关。
红色边框落在这个开关上。它下面的文字写明这样的账号会拿到什么角色。以原始尺寸打开图片
“Recent sign-in attempts”表格,三次通过目录服务的失败尝试。
红色边框落在第一行上。它显示一次失败的尝试及其原因。图中的记录来自一套测试系统,它的目录服务并不存在。以原始尺寸打开图片
7

访问系统的五种方式

开始之前: 系统的访问方式在服务器上的 SMITEY 安装程序中选择。之后您可以随时更改。

安装完成后,您的团队在任何网页浏览器中都能使用系统。安装程序会询问系统应该如何访问。在 Windows 安装程序中,您在“访问方式”页面上选择。在 Linux 上,install.sh 会问同样的问题,并把选项编号为 1 到 5。之后您可以用“更改 SMITEY 的访问方式”来更改。您的数据保持原样。

“仅局域网,通过 IP 地址访问(HTTP)- 最简单的方式”选项是默认设置。您的团队通过 http:// 加服务器的 IP 地址和端口打开系统,例如 http://192.168.1.20:8088。除非您选择其他端口,否则端口是 8088。80 端口也可以。这样地址就不需要端口。此选项不需要名称,也不需要证书。

“在局域网中使用自有名称访问(HTTP、之后可启用 HTTPS)- 您拥有内部 DNS”选项与第一个选项相同,只是使用 ticket.company.local 这样的名称。名称由您自己在内部 DNS 中创建。它指向服务器的 IP 地址。之后您的团队可以通过名称访问系统,也仍然可以通过 IP 地址访问。安装程序随后会显示带有这个名称的地址。

使用这两个 HTTP 选项时,密码和工单会以明文在您的网络中传输。管理员这时会在页面顶部看到一条提示。

其他三个选项使用 HTTPS:“通过公网域名并启用 HTTPS(借助 Let's Encrypt 自动完成)”、“在局域网中使用 HTTPS 和您自己的证书”和“在局域网中使用 HTTPS,证书由 SMITEY 创建”。它们需要服务器上的 80 和 443 端口。下一张卡片介绍它们。

首次测试时,第一个选项就够了。如果您的网络有内部 DNS,请选择第二个。如果系统需要能从互联网访问,请选择公网域名。如果您的公司有自己的证书颁发机构,请选择在局域网中使用您自己的证书。否则,就让 SMITEY 创建证书。

在 Linux 上更改 SMITEY 的访问方式

sudo bash /opt/smitey/install.sh --change-access

显示选项 1 到 5。只按 Enter 会保留当前选项,不做任何更改。

更多内容见这张卡片: 通过 HTTPS 访问系统

Windows 安装程序中的“访问方式”页面,显示五个选项。
列表上方的文字为选项编号 1 到 5。在 Linux 上,同样的文字带有这些编号。以原始尺寸打开图片
8

通过 HTTPS 访问系统

开始之前: 通往 HTTPS 的方式在服务器上的 SMITEY 安装程序中选择,而不是在浏览器中。

没有 HTTPS,密码和工单会以明文在您的网络中传输。新安装从普通 HTTP 开始,这样用任何网页浏览器都能马上使用。只要管理员通过普通 HTTP 打开系统,页面顶部就会出现一条提示:“This connection is not encrypted.” 如果在服务器本机上用“localhost”打开系统,就不会出现提示。客服人员和客户永远看不到它。

“How to switch on HTTPS”会打开这张卡片。“Hide for 30 days”会为您隐藏提示。这个设置属于您的账户,所以在其他浏览器中也有效。30 天后,如果连接仍未加密,提示会再次出现。

SMITEY 安装程序可以用三种方式设置 HTTPS。在 Windows 安装程序中,您在“访问方式”页面上选择;在 Linux 上,install.sh 会问同样的问题。对于已经在运行的系统,请打开 Windows 桌面或开始菜单中的“更改 SMITEY 的访问方式”。在 Linux 上,下面的命令做同样的事。您的数据保持原样。

“在局域网中使用 HTTPS 和您自己的证书”选项使用您自己的证书,例如来自公司 CA 的证书。安装程序会询问系统名称,以及证书文件和它的密钥。带密码的 PFX 文件也可以。在做任何更改之前,它会检查证书。密钥必须匹配,证书必须有效,名称必须写在证书里。

“在局域网中使用 HTTPS,证书由 SMITEY 创建”选项不需要您自己的证书。SMITEY 自己生成证书,也自己续期。安装程序把根证书以 SMITEY-root-ca.crt 的名称保存在安装文件夹中。请把这个文件作为受信任的根证书安装到每台电脑上,例如通过组策略。在此之前,浏览器会显示警告。

“通过公网域名并启用 HTTPS(借助 Let's Encrypt 自动完成)”选项从 Let’s Encrypt 获取证书。它需要一个指向服务器的公共域名。因此服务器必须能从互联网访问。

对于局域网中的两个选项,名称可以是 ticket.company.local 这样的名称、helpdesk 这样的单个词,或一个 IPv4 地址。三种方式都需要服务器上的 80 和 443 端口。如果另一个程序在使用它们,安装程序会停止,不做任何更改。之后通过 https:// 加名称访问系统,不带端口。

您自己的证书总有到期的时候。到期前 30 天起,管理员会在页面顶部看到带日期的提示。到期前 7 天起,提示变成红色。在 Professional 中,所有有电子邮件地址的管理员还会在到期前 30 天和 7 天各收到一封邮件。要续期,请再次打开“更改 SMITEY 的访问方式”,选择使用您自己证书的选项,并指定新文件。

随安装附带的 HTTPS-GUIDE.txt 文件描述了每个步骤,包括分发根证书和手动步骤。

在 Linux 上更改 SMITEY 的访问方式

sudo bash /opt/smitey/install.sh --change-access

显示选项 1 到 5。只按 Enter 会保留当前选项,不做任何更改。

工单列表上方的“This connection is not encrypted.”提示,带链接和“Hide for 30 days”。
红框框住指向这张卡片的链接和“Hide for 30 days”。只有管理员能看到这条提示。以原始尺寸打开图片

截图来自 1.3.1 版本。图中所示的界面到 1.13.3 版本为止没有变化。唯一看起来不同的是侧边栏底部的版本号。