Sha256: 9c14ad431da280be3e4bd8be7af1abdf871f2e9494b45c8169bc4fa7b976b965
Contents?: true
Size: 1.26 KB
Versions: 9
Compression:
Stored size: 1.26 KB
Contents
module OpenIDConnect class Client < Rack::OAuth2::Client attr_optional :check_id_endpoint, :user_info_endpoint, :expires_in def initialize(attributes = {}) super @user_info_endpoint ||= '/user_info' @check_id_endpoint ||= '/id_token' end def authorization_uri(params = {}) params[:response_type] ||= :token params[:scope] = setup_required_scope params[:scope] super end def check_id_uri absolute_uri_for check_id_endpoint end def user_info_uri absolute_uri_for user_info_endpoint end private def setup_required_scope(scopes) _scopes_ = Array(scopes).collect(&:to_s).join(' ').split(' ') _scopes_ << 'openid' unless _scopes_.include?('openid') _scopes_ end def handle_success_response(response) token_hash = JSON.parse(response.body).with_indifferent_access case token_type = token_hash[:token_type].try(:downcase) when 'bearer' AccessToken.new token_hash.merge(:client => self) else raise Exception.new("Unexpected Token Type: #{token_type}") end rescue JSON::ParserError raise Exception.new("Unknown Token Type") end end end Dir[File.dirname(__FILE__) + '/client/*.rb'].each do |file| require file end
Version data entries
9 entries across 9 versions & 1 rubygems