Skip to content

Commit 0378940

Browse files
authored
refactor(core): replace idTokenHint with clientId in sign-out url (#211)
1 parent ce92935 commit 0378940

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

kotlin-sdk/kotlin/src/main/kotlin/io/logto/sdk/core/Core.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ object Core {
4747

4848
fun generateSignOutUri(
4949
endSessionEndpoint: String,
50-
idToken: String,
50+
clientId: String,
5151
postLogoutRedirectUri: String? = null,
5252
): String {
5353
val constructedUri = endSessionEndpoint.toHttpUrlOrNull() ?: throw UriConstructionException(
5454
UriConstructionException.Type.INVALID_ENDPOINT,
5555
)
5656
return constructedUri.newBuilder().apply {
57-
addQueryParameter(QueryKey.ID_TOKEN_HINT, idToken)
57+
addQueryParameter(QueryKey.CLIENT_ID, clientId)
5858
postLogoutRedirectUri?.let {
5959
addQueryParameter(QueryKey.POST_LOGOUT_REDIRECT_URI, postLogoutRedirectUri)
6060
}

kotlin-sdk/kotlin/src/main/kotlin/io/logto/sdk/core/constant/QueryKey.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ object QueryKey {
99
const val ERROR = "error"
1010
const val ERROR_DESCRIPTION = "error_description"
1111
const val GRANT_TYPE = "grant_type"
12-
const val ID_TOKEN_HINT = "id_token_hint"
1312
const val POST_LOGOUT_REDIRECT_URI = "post_logout_redirect_uri"
1413
const val PROMPT = "prompt"
1514
const val REDIRECT_URI = "redirect_uri"

kotlin-sdk/kotlin/src/test/kotlin/io/logto/sdk/core/CoreTest.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,41 +217,41 @@ class CoreTest {
217217
@Test
218218
fun `generateSignOutUri should contain expected queries`() {
219219
val endSessionEndpoint = "https://logto.dev/oidc/endSession"
220-
val idToken = "idToken"
220+
val clientId = "clientId"
221221
val postLogoutRedirectUri = "https://myapp.com/logout_callback"
222222

223-
val resultUri = Core.generateSignOutUri(endSessionEndpoint, idToken, postLogoutRedirectUri)
223+
val resultUri = Core.generateSignOutUri(endSessionEndpoint, clientId, postLogoutRedirectUri)
224224

225225
val constructedUri = resultUri.toHttpUrl()
226226
assertThat(constructedUri.scheme).isEqualTo(endSessionEndpoint.toHttpUrl().scheme)
227227
assertThat(constructedUri.host).isEqualTo(endSessionEndpoint.toHttpUrl().host)
228228
assertThat(constructedUri.pathSegments).isEqualTo(endSessionEndpoint.toHttpUrl().pathSegments)
229-
assertThat(constructedUri.queryParameter(QueryKey.ID_TOKEN_HINT)).isEqualTo(idToken)
229+
assertThat(constructedUri.queryParameter(QueryKey.CLIENT_ID)).isEqualTo(clientId)
230230
assertThat(constructedUri.queryParameter(QueryKey.POST_LOGOUT_REDIRECT_URI)).isEqualTo(postLogoutRedirectUri)
231231
}
232232

233233
@Test
234234
fun `generateSignOutUri should not contain postLogoutRedirectUri if that is not provided`() {
235235
val endSessionEndpoint = "https://logto.dev/oidc/endSession"
236-
val idToken = "idToken"
236+
val clientId = "clientId"
237237

238-
val resultUri = Core.generateSignOutUri(endSessionEndpoint, idToken)
238+
val resultUri = Core.generateSignOutUri(endSessionEndpoint, clientId)
239239

240240
val constructedUri = resultUri.toHttpUrl()
241241
assertThat(constructedUri.scheme).isEqualTo(endSessionEndpoint.toHttpUrl().scheme)
242242
assertThat(constructedUri.host).isEqualTo(endSessionEndpoint.toHttpUrl().host)
243243
assertThat(constructedUri.pathSegments).isEqualTo(endSessionEndpoint.toHttpUrl().pathSegments)
244-
assertThat(constructedUri.queryParameter(QueryKey.ID_TOKEN_HINT)).isEqualTo(idToken)
244+
assertThat(constructedUri.queryParameter(QueryKey.CLIENT_ID)).isEqualTo(clientId)
245245
assertThat(constructedUri.queryParameter(QueryKey.POST_LOGOUT_REDIRECT_URI)).isEqualTo(null)
246246
}
247247

248248
@Test
249249
fun `generateSignOutUri should throw exception if the endSessionEndpoint is invalid`() {
250250
val endSessionEndpoint = "invalid_endpoint"
251-
val idToken = "idToken"
251+
val clientId = "clientId"
252252

253253
val expectedException = Assert.assertThrows(UriConstructionException::class.java) {
254-
Core.generateSignOutUri(endSessionEndpoint, idToken)
254+
Core.generateSignOutUri(endSessionEndpoint, clientId)
255255
}
256256

257257
assertThat(expectedException).hasMessageThat().contains(UriConstructionException.Type.INVALID_ENDPOINT.name)

0 commit comments

Comments
 (0)