跳转至

后端/API 集成

如果您的 API 或后端服务需要身份验证,可以在应用服务器代码中验证会话。客户端发往应用服务器的每个请求都应携带访问令牌或 Cookie,后端服务器应对每个 HTTP 请求进行验证。

根据您是在服务器中验证 JWT(JSON Web Token),还是将身份验证转发到 Authany 解析端点(Resolver Endpoint),验证请求的方式也有所不同。

在应用服务器中验证 JSON Web Token(JWT) 将身份验证转发到 Authany 解析端点
可靠性

中等
JWT 只有在过期时才会更新。这意味着在令牌过期前,即使用户已被禁用,您的应用仍可能将其视为有效用户。

高
根据您的反向代理缓存设置,更新接近实时

集成难度

简单
只需在应用中添加代码来验证和解码 JWT

中等
需要额外搭建反向代理来解析身份验证信息

会话传输方式 访问令牌,位于 Authorization 请求头中

Cookie 中的 会话 ID,或
Authorization 请求头中的 访问令牌

简单方式:在服务器中验证 JWT

Authany 使用 JSON Web Token(JWT) 来实现安全的数据传输、身份验证和授权。

sequenceDiagram
autonumber
participant app as Mobile/Single Page Application
app->>Authgear: User authenticates with Authgear
Authgear-->>app: Access token & refresh token
participant server as Your app server
app->>server: User sends request with access token
server->>server: Verify request
server -->> app: Server responds with requested information

身份验证完成后,Authany 会向客户端应用返回 access token 和 refresh token。客户端应用调用后端时,应将访问令牌放在 Authorization 请求头中。后端服务器应对令牌进行解析和验证,以确保令牌未被篡改且签名真实有效。

请求示例:

> GET /api_path HTTP/1.1
> Host: yourdomain.com
> Authorization: Bearer <AUTHGEAR_ACCESS_TOKEN_IN_JWT>

详情请参阅在应用服务器中验证 JWT指南。

在后端验证 JWT

进阶方式:将身份验证转发到 Authany 解析端点

转发身份验证(Forward Authentication)是指由中间的反向代理或 API 网关负责在请求到达目标应用或服务之前完成身份验证。这样可以增加一层安全保障,并将身份验证逻辑集中管理。中间服务会将每个接收到的 HTTP 请求转发给 Authany 解析端点,以验证 HTTP 请求头中的访问令牌或 Cookie。

详情请参阅将身份验证转发到 Authany 解析端点指南。

在 Authorization 请求头中转发访问令牌

sequenceDiagram
  autonumber
  Browser ->> Authgear: User authenticate with Authgear
  Authgear -->> Browser: Access token and refresh token
  Browser ->> Reverse Proxy: Request with access token
  participant Resolver as Authgear Resolver Endpoint
  rect rgb(191, 223, 255)
  note left of Resolver: Verify access token
  Reverse Proxy ->> Resolver: Forward request authorization header
  Resolver -->> Reverse Proxy: Response with "x-authgear-headers"
  end
  participant App as Your app server
  Reverse Proxy ->> App: Pass request with updated headers
  App -->> Reverse Proxy: Response
  Reverse Proxy -->> Browser: Response

无需在后端验证访问令牌,反向代理会将请求转发给 Authany 解析端点。该端点会解析并验证请求 Authorization 请求头中的访问令牌。

sequenceDiagram
  autonumber
  Browser ->> Authgear: User authenticate with Authgear
  Authgear -->> Browser: Authgear sets cookies
  Browser ->> Reverse Proxy: Request with cookies
  participant Resolver as Authgear Resolver Endpoint
  rect rgb(191, 223, 255)
  note left of Resolver: Verify cookie
  Reverse Proxy ->> Resolver: Forward request cookie header
  Resolver -->> Reverse Proxy: Response with "x-authgear-headers"
  end
  participant App as Your app server
  Reverse Proxy ->> App: Pass request with updated headers
  App -->> Reverse Proxy: Response
  Reverse Proxy -->> Browser: Response

在这种方式下,Authany 不再验证 Authorization 请求头中的令牌,而是返回 Set-Cookie 响应头,并在浏览器中设置 Cookie。这些 Cookie 是 HTTP-only 的,并在相同的根域名下共享。因此,您需要为 Authany 设置自定义域名,例如 identity.yourdomain.com。

如果您在 yourdomain.com 下有多个应用,所有应用会自动共享同一个会话 Cookie。之后,您就可以使用解析端点来验证这些 Cookie。

请求示例:

> GET /api_path HTTP/1.1
> Host: yourdomain.com
> cookie: session=<AUTHGEAR_SESSION_ID>