Skip to content

Commit f19c2ac

Browse files
committed
refactor(introspect): use nimbus utils for converting date claims, minor cleanups
1 parent d98e63f commit f19c2ac

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/main/kotlin/no/nav/security/mock/oauth2/introspect/Introspect.kt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat
44
import com.fasterxml.jackson.annotation.JsonInclude
55
import com.fasterxml.jackson.annotation.JsonProperty
66
import com.nimbusds.jwt.JWTClaimsSet
7+
import com.nimbusds.jwt.util.DateUtils
78
import com.nimbusds.oauth2.sdk.OAuth2Error
89
import mu.KotlinLogging
910
import no.nav.security.mock.oauth2.OAuth2Exception
@@ -14,6 +15,7 @@ import no.nav.security.mock.oauth2.http.Route
1415
import no.nav.security.mock.oauth2.http.json
1516
import no.nav.security.mock.oauth2.token.OAuth2TokenProvider
1617
import okhttp3.Headers
18+
import java.util.Date
1719

1820
private val log = KotlinLogging.logger { }
1921

@@ -29,18 +31,18 @@ internal fun Route.Builder.introspect(tokenProvider: OAuth2TokenProvider) =
2931
request.verifyToken(tokenProvider)?.let {
3032
json(
3133
IntrospectResponse(
32-
true,
33-
it.getStringClaim("scope"),
34-
it.getStringClaim("client_id"),
35-
it.getStringClaim("username"),
36-
it.getStringClaim("token_type") ?: "Bearer",
37-
it.expirationTime?.time?.div(1000),
38-
it.issueTime?.time?.div(1000),
39-
it.notBeforeTime?.time?.div(1000),
40-
it.subject,
41-
it.audience,
42-
it.issuer,
43-
it.jwtid,
34+
active = true,
35+
scope = it.getStringClaim("scope"),
36+
clientId = it.getStringClaim("client_id"),
37+
username = it.getStringClaim("username"),
38+
tokenType = it.getStringClaim("token_type") ?: "Bearer",
39+
exp = it.expirationTime.epochSeconds(),
40+
iat = it.issueTime.epochSeconds(),
41+
nbf = it.notBeforeTime.epochSeconds(),
42+
sub = it.subject,
43+
aud = it.audience,
44+
iss = it.issuer,
45+
jti = it.jwtid,
4446
),
4547
)
4648
} ?: json(IntrospectResponse(false))
@@ -70,6 +72,8 @@ private fun String.auth(method: String): String? =
7072
.takeIf { it.size == 2 }
7173
?.last()
7274

75+
private fun Date?.epochSeconds(): Long? = this?.let(DateUtils::toSecondsSinceEpoch)
76+
7377
@JsonInclude(JsonInclude.Include.NON_NULL)
7478
data class IntrospectResponse(
7579
@JsonProperty("active")

src/test/kotlin/no/nav/security/mock/oauth2/introspect/IntrospectTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ internal class IntrospectTest {
9292
}
9393

9494
@Test
95-
fun `introspect should return iat and exp from claims when provider`() {
95+
fun `introspect should return iat and exp from claims when present in token`() {
9696
val issuerUrl = "http://localhost/default"
9797
val tokenProvider = OAuth2TokenProvider()
9898
val claims =

0 commit comments

Comments
 (0)