GraphQL Mesh如何与使用OAuth、SAML认证的后端服务做身份验证
GraphQL Mesh 对接 OAuth/SAML 后端身份校验常见问题解答
API-KEY 相关说明
你在示例中看到的 API-KEY 是 Mesh 向后端发起请求时携带的身份凭证,获取规则完全由你对接的后端服务决定:
- 若后端采用 OAuth 2.0 客户端凭证模式,你需要向后端对应的 OAuth 认证端点发起请求,传入合法的
client_id、client_secret、授权范围等参数,获取返回的access_token,即可作为示例中的 API-KEY 使用 - 若后端采用 SAML 认证,你需要先完成 SAML 断言交互流程,从身份提供商处获取合法的会话凭证,转换为后端可识别的请求头值后,即可作为示例中的 API-KEY 使用
启动流程相关疑问
你不需要在执行 yarn mesh 命令前手动完成认证、存储凭证,Mesh 本身支持动态获取、自动刷新凭证,不存在你遗漏的前置操作,常用的对接方案有两类,按需选择即可:
- 透传客户端身份模式:客户端请求 Mesh 时直接携带自身的 OAuth 凭证或 SAML 会话凭证,你只需在 Mesh 数据源配置的
operationHeaders中配置规则,将客户端传入的凭证直接透传给后端即可,后端自行完成身份校验,全程不需要 Mesh 处理认证逻辑 - Mesh 统一服务账号模式:Mesh 作为独立的服务身份统一对接后端,你只需自行实现凭证获取、自动刷新的脚本,在 Mesh 配置中引入脚本的凭证获取方法,Mesh 每次向后端发起请求前会自动调用方法获取有效凭证,不需要提前手动执行认证操作,凭证过期也会自动刷新。示例配置逻辑如下:
sources: - name: YourBackendService handler: openapi: source: ./your-backend-openapi-spec.yaml operationHeaders: # 动态调用自定义脚本获取有效凭证 Authorization: "Bearer ${require('./utils/get-valid-token.js').fetchToken()}"
内容的提问来源于stack exchange,提问作者Manju
相关产品推荐
相关产品推荐

