Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

BUG: WIF token exchange fails to deserialize: expires_at not marked as ignorable in TokenExchangeResponse

未关闭 适合新手
#1,202 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
72/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
java, kotlin

调研方向

该错误在 com.openai.auth.TokenExchangeResponse 中抛出,它在 WorkloadIdentityAuth.processTokenExchangeResponse(WorkloadIdentityAuth.kt)中反序列化令牌交换的响应。请阅读 TokenExchangeResponse.kt,并检查 auth 包中其他响应类如何处理未知字段。当包含 expires_at 的响应能被正确解析时即完成,最好附带一个输入该 JSON 正文的测试。

由索引模型根据 Issue 内容生成。

描述

Summary

Workload identity federation fails during the token exchange response parsing. OpenAI's /oauth/token endpoint returns an expires_at field that TokenExchangeResponse does not, and the deserializer is not configured to ignore unknown properties.

Version

com.openai:openai-java:4.82.0

Error

Error Text
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "expires_at" (class com.openai.auth.TokenExchangeResponse), not marked as ignorable (4 known properties: "token_type", "issued_token_type", "access_token", "expires_in")
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 6, column: 27] (through reference chain: com.openai.auth.TokenExchangeResponse["expires_at"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1200)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2434)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1826)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1804)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:271)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:472)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1502)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:340)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:5052)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3954)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3937)
	at com.openai.auth.WorkloadIdentityAuth.processTokenExchangeResponse(WorkloadIdentityAuth.kt:300)
	at com.openai.auth.WorkloadIdentityAuth.performRefresh(WorkloadIdentityAuth.kt:245)
	at com.openai.auth.WorkloadIdentityAuth.getToken(WorkloadIdentityAuth.kt:121)
	at com.openai.core.http.WorkloadIdentityHttpClient.execute(WorkloadIdentityHttpClient.kt:19)
	at com.openai.core.http.LoggingHttpClient.execute(LoggingHttpClient.kt:57)
	at com.openai.core.http.RetryingHttpClient.executeInternal(RetryingHttpClient.kt:95)
	at com.openai.core.http.RetryingHttpClient.execute(RetryingHttpClient.kt:34)
	at com.openai.services.blocking.chat.ChatCompletionServiceImpl$WithRawResponseImpl.create(ChatCompletionServiceImpl.kt:140)
	at com.openai.services.blocking.chat.ChatCompletionServiceImpl.create(ChatCompletionServiceImpl.kt:63)
	at com.openai.services.blocking.chat.ChatCompletionService.create(ChatCompletionService.kt:64)
	at openai_auth.main(openai_auth.java:102)

Cause

TokenExchangeResponse includes only four fields (access_token, issued_token_type, token_type, expires_in) and does not set @JsonIgnoreProperties(ignoreUnknown = true).

Impact

Any WIF flow using a custom SubjectTokenProvider (e.g. AWS STS GetWebIdentityToken) fails at response parsing.

主要语言
Kotlin
星标
1.5k
派生
268
平均合并
14 小时 59 分钟
30 天内合并 PR
165

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

openai/openai-java 的其他 Issue

查看 openai/openai-java 的全部 Issue

相似的 Issue

更多 Kotlin Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。