Spotnana 认证流程 - 概览
目录
Spotnana 提供多种认证方式,方便合作伙伴安全集成我们的平台。本文档将整体介绍 Spotnana 当前支持的各类认证方式,并详细说明每种流程。这里提到的不同认证流程,展示了 Spotnana 如何对用户进行身份验证和授权,从而让用户访问其公司在 Spotnana 平台上的专属资源。
核心组件
在开始操作前,建议先了解下文档中涉及到的核心系统组件的定义。
- Spotnana UI(Spotnana 用户界面) 指 Spotnana 的前端网页应用(即在线预订工具)或 Spotnana 手机 App。更具体来说,主要指登录页面,用户登录或创建新账号时,会触发前端的认证流程。
- Spotnana 服务器 指 Spotnana 后台服务器,用于身份认证(例如授权用户访问资源、保障用户信息的安全存储和处理等)。
- 合作伙伴 UI (合作伙伴用户界面) 合作伙伴用于访问 Spotnana 平台的前端界面。例如,在 iFrame 认证场景下,Spotnana 平台会嵌入到合作伙伴的 UI 中,用户通过合作伙伴的界面访问 Spotnana。
- 合作伙伴服务器 指合作伙伴为对接 Spotnana 而部署的一个或多个后台服务器。
- Spotnana IdP (Spotnana 身份提供方) 指 Spotnana 内部用于用户身份管理和授权的服务。
- 合作伙伴 IdP 合作伙伴使用的第三方身份提供方(IdP),常见的有 Google、Azure 等。
- OBT Spotnana 的在线预订工具(OBT),可通过以下地址访问 https://app.spotnana.com/
- Subject token(主体令牌) 在 iFrame(或令牌交换)认证中,subject token 代表用户身份。系统会用这个令牌查询用户信息,并授权其访问 Spotnana 平台。
- Access token(访问令牌) 合作伙伴应用在代表用户访问受保护资源时使用的 OAuth 认证凭证。它是一种临时授权密钥,允许应用安全地调用 API,而无需暴露用户的账号密码。
- Refresh token(刷新令牌) 一种长期有效的凭证,用于在无需用户再次登录的情况下获取新的 access token。通常在首次登录时,与 access token 一起下发。
- Client credentials(客户端凭证) 用于直接连接 Spotnana API 的用户所需的信息(即唯一的
clientId
和clientSecret
)。 - PID(个人标识符) 为用户生成的唯一标识,用于从 Spotnana 服务器获取用户信息。
orgId
Spotnana 分配给用户所在组织的唯一标识符。tmcId
Spotnana 分配给 TMC(差旅管理公司)的唯一标识符。
支持的认证方式
Spotnana 目前支持以下几种认证方式:
密码认证
在密码认证模式下,Spotnana UI(即 OBT 登录或注册页面)会发起并管理与后台服务器的认证流程。具体流程会根据用户是已有账号登录,还是新用户注册而有所不同。下面会分别用时序图说明这两种认证流程。
已有用户
下方的时序图和步骤,展示了 Spotnana UI 如何与后台服务协作,完成已有用户的身份认证。
图示: 已有用户密码认证流程的时序图说明。
步骤 | 流程 |
---|---|
已有用户通过 OBT 或 Spotnana 手机 App,输入邮箱进行登录。 | |
1 |
|
2 |
|
3 |
|
新用户
下方的时序图和步骤,展示了 Spotnana UI 如何与后台服务协作,完成新用户(或已有用户重置密码)的身份认证。
图示: 新用户密码认证流程的时序图说明。
步骤 | 流程 |
---|---|
新用户在 Spotnana OBT 登录页输入邮箱后,点击 下一步。 | |
1 |
|
1 a | 用户输入新密码后,点击 下一步。 |
2 |
|
3 |
|
4 |
|
基于 IdP 的认证
Spotnana 支持通过 Google、Azure 以及自定义 IdP(基于 OpenID Connect 或 SAML 协议)进行认证。下方时序图和步骤说明了基于 IdP 的认证流程。
图示: 基于 IdP 认证流程的时序图说明。
步骤 | 流程 |
---|---|
用户通过 OBT 或 Spotnana 手机 App,输入邮箱进行登录。 | |
1 |
|
2 | Spotnana UI 将请求重定向到 Spotnana IdP。 |
3 | Spotnana IdP 再将请求重定向到合作伙伴的 IdP,正式发起用户的 IdP 认证流程。 说明: 每次重定向时,都会返回 302 状态码,表示请求已跳转到新的 URL。 |
4 | Spotnana IdP 与合作伙伴 IdP 建立连接,用于确认用户已通过合作伙伴 IdP 的认证。 说明: 在此过程中,Spotnana IdP 会将 |
5 | 合作伙伴 IdP 成功认证用户。 说明: 此时,用户资料还需要通过 bearer token 验证。 |
5 a | 认证成功后,合作伙伴 IdP 会将认证结果返回给 Spotnana IdP。 |
5 b | Spotnana IdP 为该用户生成唯一 code,并返回给 Spotnana UI。 |
6 |
说明: bearer token 创建成功,即表示用户已通过认证,可以访问 Spotnana。 |
7 |
|
API 认证
如果合作伙伴通过 Spotnana API 对接平台,可以使用我们的认证接口为用户生成 bearer token。下方时序图展示了 API 认证的整体流程。
图示: API 认证流程的时序图说明。
步骤 | 流程 |
---|---|
1 | API 用户向 Spotnana 服务器的 POST 接口 下面是调用 curl -i -X POST \ https://api.spotnana.com/get-auth-token \ -H 'Content-Type: application/json' \ -d '{ "clientId": "sample-apiuser@tmcorg.com", "clientSecret": "<password>" }' 说明: 请将 |
2 |
|
API 用户拿到 bearer token 后,后续访问 Spotnana 各类 API(如 差旅 API)时,需在请求头中带上 bearer token 进行授权。
说明: 接口 get-auth-token(clientId, clientSecret)
每 5 分钟最多可调用 100 次。
iFrame 认证
iFrame 或嵌入式方案是指合作伙伴将 Spotnana UI 嵌入到自己的 UI 中,用户通过合作伙伴界面访问 Spotnana。在这种场景下,用户认证是通过合作伙伴系统和 Spotnana 之间的令牌交换来完成的。
说明:在 iFrame 认证场景下,登录用户通常被称为 caller。这是为了适配某些特殊场景,比如 API/机器用户登录后,为其他用户申请 access token。这类 API/机器用户可能会用 TMC 管理员账号直接连接 Spotnana 服务器。因此,文档中统一用 caller 来泛指登录自己账号的用户,或为他人申请 access token 的 API/机器用户。
下方时序图展示了 Spotnana 与合作伙伴服务器之间通过令牌交换实现认证的流程。
图示: 基于令牌交换的 iFrame 认证流程时序图说明。
步骤 | 流程 |
---|---|
caller 通过合作伙伴 UI 登录。 | |
1 | 合作伙伴 UI 通过 iFrame 加载 Spotnana UI。 |
2 | Spotnana UI 通过 post message 向合作伙伴 UI 发送请求,获取令牌。请求参数为 type=TOKEN_EXCHANGE_REQUEST 。 |
3 | 合作伙伴 UI 向合作伙伴服务器发起 API 请求,获取 OAuth 令牌,进入后续认证流程。 |
3 a | 合作伙伴服务器调用 Spotnana 服务器,传入用户凭证和 subject token。Spotnana 服务器会判断请求是否来自 API/机器用户。 |
3 b |
|
3 c |
|
4 | 合作伙伴 UI 通过 post message,将 token 发送给 Spotnana UI,参数为 |
5 |
说明: bearer token 创建成功,即表示用户已通过认证,可以访问 Spotnana。 |
6 |
|
授权码认证
下方时序图展示了基于授权码的认证流程。
图示: 基于授权码认证流程的时序图说明。
步骤 | 流程 |
---|---|
1 | 合作伙伴 UI 调用合作伙伴服务器,获取 caller 的授权码。授权码返回给合作伙伴 UI。 |
2 | 合作伙伴 UI 通过自定义重定向 URL,将 |
3 | Spotnana UI 通过 POST API 向 Spotnana 服务器发起请求,接口为 |
3 a |
|
3 b | Spotnana 服务器生成 access token 和 refresh token,并返回给 Spotnana UI。 |
4 |
说明: bearer token 创建成功,即表示用户已通过认证,可以访问 Spotnana。 |
5 |
|
说明: 如果 TMC 管理员允许多个用户用同一个邮箱登录,则无法使用该认证流程。
机器对机器(M2M)认证
M2M 认证适用于客户端应用需要访问第三方回调 URL,为用户生成 accessToken
的场景。下方时序图展示了 M2M 认证流程。
图示: M2M 认证流程的时序图说明。
步骤 | 流程 |
---|---|
所有参与认证的应用公钥会在 Spotnana 服务器与 Spotnana IdP 之间同步,后续认证流程中会用来校验 access token。 | |
1 | 合作伙伴服务器向 Spotnana IdP 的 |
2 |
|
3 |
|
这篇文章有帮助吗?
很好!
感谢您的反馈。
抱歉我们没能带来帮助
感谢您的反馈。
反馈已发送
感谢,我们将试着改善此文档。