BUG: WIF token exchange fails to deserialize: expires_at not marked as ignorable in TokenExchangeResponse
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- authentication
Línea de trabajo
El fallo se lanza en com.openai.auth.TokenExchangeResponse, que deserializa la respuesta del intercambio de tokens en WorkloadIdentityAuth.processTokenExchangeResponse (WorkloadIdentityAuth.kt). Lee TokenExchangeResponse.kt y comprueba cómo otras clases de respuesta del paquete auth gestionan los campos desconocidos. Se considera terminado cuando una respuesta que contiene expires_at se parsea correctamente, idealmente con una prueba que reciba ese cuerpo JSON.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Kotlin
- Estrellas
- 1.5k
- Forks
- 268
- Merge medio
- 14 h 59 min
- PR fusionados (30 d)
- 165
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openai/openai-java
-
HttpRequest.url() logs spaces in path segments as literal plus signsPosiblemente ocupada @sylvesterkaczmarek la tomó hace 59 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openai/openai-java#886 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Make diarized transcription duration and task optionalPosiblemente ocupada @wskr00 la tomó hace 90 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
openai/openai-java#802 · 2 comentarios · 3 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
openai/openai-java#1175 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 42/100
openai/openai-java#1160 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
openai/openai-java#956 ·
Los mantenedores suelen responder en 1 día
Todos los issues de openai/openai-java
Issues similares
-
bug follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
binding:web core docs p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
Los mantenedores suelen responder en 1 día
-
StepExamBenchmarkTest runs a loop and prints a timing but asserts nothingPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertojules
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
open-learning-exchange/myplanet#18199 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
Remove deprecated DWCj pluginAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
getCredentials fails on an unrecognized fingerprint while the biometric prompt is still openAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
auth0/Auth0.Android#1095 · 1 comentario ·
Los mantenedores suelen responder en 1 día