|
@@ -0,0 +1,34 @@
|
|
|
+# Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
|
|
|
+
|
|
|
+require 'omniauth/openid_connect'
|
|
|
+
|
|
|
+# Monkey patch to support more different token endpoints. Can be removed when this PR is merged:
|
|
|
+# https://github.com/omniauth/omniauth_openid_connect/pull/192
|
|
|
+module OmniAuth
|
|
|
+ module Strategies
|
|
|
+ class OpenIDConnect
|
|
|
+ def access_token
|
|
|
+ return @access_token if @access_token
|
|
|
+
|
|
|
+ token_request_params = {
|
|
|
+ scope: (options.scope if options.send_scope_to_token_endpoint),
|
|
|
+ client_auth_method: options.client_auth_method,
|
|
|
+ }
|
|
|
+
|
|
|
+ token_request_params[:code_verifier] = params['code_verifier'] || session.delete('omniauth.pkce.verifier') if options.pkce
|
|
|
+
|
|
|
+ if configured_response_type == 'code'
|
|
|
+ token_request_params[:grant_type] = :authorization_code
|
|
|
+ token_request_params[:code] = authorization_code
|
|
|
+ token_request_params[:redirect_uri] = redirect_uri
|
|
|
+ token_request_params[:client_id] = client_options.identifier
|
|
|
+ end
|
|
|
+
|
|
|
+ @access_token = client.access_token!(token_request_params)
|
|
|
+ verify_id_token!(@access_token.id_token) if configured_response_type == 'code'
|
|
|
+
|
|
|
+ @access_token
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|