Skip to content

Commit 25b7634

Browse files
committed
Add id_token_hint to the post logout redirect uri, to facilitate the direct redirect (without confirmation) with some IdP sofware (keycloak)
1 parent af61a91 commit 25b7634

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

lib/omniauth/strategies/openid_connect.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,8 @@ def encoded_post_logout_redirect_uri
424424
return unless options.post_logout_redirect_uri
425425

426426
URI.encode_www_form(
427-
post_logout_redirect_uri: options.post_logout_redirect_uri
427+
post_logout_redirect_uri: options.post_logout_redirect_uri,
428+
id_token_hint: access_token.id_token
428429
)
429430
end
430431

test/lib/omniauth/strategies/openid_connect_test.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ def test_logout_phase_with_discovery
4545
end
4646

4747
def test_logout_phase_with_discovery_and_post_logout_redirect_uri
48-
expected_redirect = 'https://example.com/logout?post_logout_redirect_uri=https%3A%2F%2Fmysite.com'
48+
access_token = stub('OpenIDConnect::AccessToken')
49+
access_token.stubs(:id_token).returns(jwt.to_s)
50+
expected_redirect = "https://example.com/logout?post_logout_redirect_uri=https%3A%2F%2Fmysite.com&id_token_hint=#{access_token.id_token}"
4951
strategy.options.client_options.host = 'example.com'
5052
strategy.options.discovery = true
5153
strategy.options.post_logout_redirect_uri = 'https://mysite.com'
54+
strategy.stubs(:access_token).returns(access_token)
5255

5356
issuer = stub('OpenIDConnect::Discovery::Issuer')
5457
issuer.stubs(:issuer).returns('https://example.com/')

0 commit comments

Comments
 (0)