scinote-web/lib/omniauth/strategies/custom_azure_active_directory.rb

40 lines
1.3 KiB
Ruby
Raw Normal View History

2019-12-11 00:24:53 +08:00
# frozen_string_literal: true
module OmniAuth
module Strategies
class CustomAzureActiveDirectory < AzureActivedirectoryV2
2019-12-11 00:24:53 +08:00
include OmniAuth::Strategy
option :name, 'customazureactivedirectory'
2019-12-11 00:24:53 +08:00
def client
omni_client = super
begin
app_conf =
Rails.cache.fetch("ad_app_conf_#{options[:client_id]}", expires_in: 1.day) do
JSON.parse(Net::HTTP.get(URI(options[:conf_url])))
end
omni_client.options[:authorize_url] = app_conf['authorization_endpoint']
omni_client.options[:token_url] = app_conf['token_endpoint']
rescue StandardError => e
Rails.logger.error('Failed to load OAuth2 configuration from the remote server! Using defaults.')
Rails.logger.error(e.message)
end
omni_client
end
def raw_info
if @raw_info.nil?
id_token_data = ::JWT.decode(access_token.params['id_token'], nil, false).first rescue {}
auth_token_data = ::JWT.decode(access_token.token, nil, false).first rescue {}
@raw_info = auth_token_data.merge(id_token_data)
end
2019-12-11 00:24:53 +08:00
@raw_info
2019-12-11 00:24:53 +08:00
end
end
end
end
OmniAuth.config.add_camelization 'custom_azure_activedirectory', 'CustomAzureActiveDirectory'