后端/API 集成¶
如果您的 API 或后端服务需要身份验证,可以在应用服务器代码中验证会话。客户端发往应用服务器的每个请求都应携带访问令牌或 Cookie,后端服务器应对每个 HTTP 请求进行验证。
根据您是在服务器中验证 JWT(JSON Web Token),还是将身份验证转发到 Authany 解析端点(Resolver Endpoint),验证请求的方式也有所不同。
| 在应用服务器中验证 JSON Web Token(JWT) | 将身份验证转发到 Authany 解析端点 | |
|---|---|---|
| 可靠性 | 中等 |
高 |
| 集成难度 | 简单 |
中等 |
| 会话传输方式 | 访问令牌,位于 Authorization 请求头中 |
Cookie 中的 会话 ID,或 |
简单方式:在服务器中验证 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指南。
进阶方式:将身份验证转发到 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 请求头中的访问令牌。
在 HTTP 请求头中转发 Cookie¶
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。
请求示例: