omniauth_openid_connect.rb 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'omniauth/openid_connect'
  3. # Monkey patch to support more different token endpoints. Can be removed when this PR is merged:
  4. # https://github.com/omniauth/omniauth_openid_connect/pull/192
  5. module OmniAuth
  6. module Strategies
  7. class OpenIDConnect
  8. def access_token
  9. return @access_token if @access_token
  10. token_request_params = {
  11. scope: (options.scope if options.send_scope_to_token_endpoint),
  12. client_auth_method: options.client_auth_method,
  13. }
  14. token_request_params[:code_verifier] = params['code_verifier'] || session.delete('omniauth.pkce.verifier') if options.pkce
  15. if configured_response_type == 'code'
  16. token_request_params[:grant_type] = :authorization_code
  17. token_request_params[:code] = authorization_code
  18. token_request_params[:redirect_uri] = redirect_uri
  19. token_request_params[:client_id] = client_options.identifier
  20. end
  21. @access_token = client.access_token!(token_request_params)
  22. verify_id_token!(@access_token.id_token) if configured_response_type == 'code'
  23. @access_token
  24. end
  25. end
  26. end
  27. end