动态身份验证
动态身份验证
动态身份验证
您的 API 可能需要动态身份验证,其中需要为每个请求生成或刷新凭据,例如签名短期 JWT 或轮换令牌。TypeScript SDK 通过自定义 fetcher 中间件支持这种模式。
在 TypeScript SDK 中实现动态身份验证的推荐方式是使用自定义 fetcher。这充当所有请求的中间件,允许您在单个位置注入身份验证逻辑,而无需重写单个方法。
当您在生成器配置中启用 allowCustomFetcher 时,生成的 SDK 在客户端选项中接受 fetcher 参数。此 fetcher 包装所有 HTTP 请求,为您提供身份验证逻辑的单个注入点。
以下是如何通过令牌记忆化实现 JWT 签名:
使用 packageJson 配置选项添加 jsonwebtoken 依赖,以便它合并到生成的 package.json 中:
查看 TypeScript 配置页面 了解所有可用的 packageJson 选项。
扩展生成的客户端以使用自定义 fetcher:
这种模式使用 ConstructorParameters 从生成的客户端推断确切的选项类型,确保与所有客户端选项(headers、timeoutInSeconds、maxRetries 等)的兼容性,而无需硬编码它们。这使包装器在生成器添加新选项时保持向前兼容。
这种相同的模式适用于其他动态身份验证场景:
generators.yml 中启用 allowCustomFetcher 选项,以便 fetcher 参数在 BaseClientOptions 中可用../core/fetcher(或生成的 SDK 中的适当路径)导入默认 fetcher,以使用您的自定义逻辑包装它Authorization 头部。考虑使用不同的头部名称或有条件地设置头部iat 和 exp 声明使用 Unix 时间戳(自纪元以来的秒数)以符合 JWT 标准