class OmniAuth::Strategies::AzureActivedirectoryV2
Constants
- BASE_AZURE_URL
- DEFAULT_SCOPE
Public Instance Methods
callback_url()
click to toggle source
# File lib/omniauth/strategies/azure_activedirectory_v2.rb, line 59 def callback_url full_host + script_name + callback_path end
client()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/azure_activedirectory_v2.rb, line 16 def client if options.tenant_provider provider = options.tenant_provider.new(self) else provider = options # if pass has to config, get mapped right on to options end options.client_id = provider.client_id options.client_secret = provider.client_secret options.tenant_id = provider.respond_to?(:tenant_id) ? provider.tenant_id : 'common' options.base_azure_url = provider.respond_to?(:base_azure_url) ? provider.base_azure_url : BASE_AZURE_URL options.authorize_params = provider.authorize_params if provider.respond_to?(:authorize_params) options.authorize_params.domain_hint = provider.domain_hint if provider.respond_to?(:domain_hint) && provider.domain_hint options.authorize_params.prompt = request.params['prompt'] if defined? request && request.params['prompt'] options.authorize_params.scope = (provider.scope if provider.respond_to?(:scope) && provider.scope) || DEFAULT_SCOPE options.client_options.authorize_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/v2.0/authorize" options.client_options.token_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/v2.0/token" super end
raw_info()
click to toggle source
docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens
Some account types from Microsoft seem to only have a decodable ID token, with JWT unable to decode the access token. Information is limited in those cases. Other account types provide an expanded set of data inside the auth token, which does decode as a JWT.
Merge the two, allowing the expanded auth token data to overwrite the ID token data if keys collide, and use this as raw info.
# File lib/omniauth/strategies/azure_activedirectory_v2.rb, line 73 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 {} id_token_data.merge!(auth_token_data) @raw_info = id_token_data end @raw_info end