Class: OmniAuth::Strategies::Dice

Inherits:
Object
  • Object
show all
Includes:
OmniAuth::Strategy
Defined in:
lib/omniauth/strategies/dice.rb

Overview

Provides omniauth authentication integration with a CAS server

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dataObject

Returns the value of attribute data.



37
38
39
# File 'lib/omniauth/strategies/dice.rb', line 37

def data
  @data
end

#dnObject

Returns the value of attribute dn.



37
38
39
# File 'lib/omniauth/strategies/dice.rb', line 37

def dn
  @dn
end

#raw_dnObject

Returns the value of attribute raw_dn.



37
38
39
# File 'lib/omniauth/strategies/dice.rb', line 37

def raw_dn
  @raw_dn
end

Instance Method Details

#auth_hashObject



100
101
102
103
104
105
106
107
108
# File 'lib/omniauth/strategies/dice.rb', line 100

def auth_hash
  log :debug, '.auth_hash'
  Hashie::Mash.new(
    'provider' => name,
    'uid'      => uid,
    'info'     => info,
    'extra'    => extra
  )
end

#callback_phaseObject



90
91
92
93
94
95
96
97
98
# File 'lib/omniauth/strategies/dice.rb', line 90

def callback_phase
  response = authenticate_user
  return fail!(:invalid_credentials) if response.nil?
  @raw_data = response.body
  @data = parse_response_data
  session['omniauth.auth'] ||= auth_hash

  super
end

#format_dn(dn_str) ⇒ Object

Reformat DN to expected element order for CAS DN server (via dnc gem).



55
56
57
# File 'lib/omniauth/strategies/dice.rb', line 55

def format_dn(dn_str)
  get_dn(dn_str).to_s
end

#redirect_for_callbackObject



133
134
135
136
137
138
139
140
141
142
143
# File 'lib/omniauth/strategies/dice.rb', line 133

def redirect_for_callback
  if options.custom_callback_url
    redirect options.custom_callback_url
  else
    if options.use_callback_url == true
      redirect callback_url
    else
      redirect callback_path
    end
  end
end

#request_phaseObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/omniauth/strategies/dice.rb', line 74

def request_phase
  validate_required_params
  subject_dn = get_dn_by_type('subject')
  return fail!('You need a valid DN to authenticate.') unless subject_dn
  user_dn = format_dn(subject_dn)
  log :debug, "Formatted user_dn:   #{user_dn}"
  return fail!('You need a valid DN to authenticate.') unless user_dn
  set_session_dn(user_dn, 'subject')
  issuer_dn = get_dn_by_type('issuer')
  issuer_dn = format_dn(issuer_dn) if issuer_dn
  log :debug, "Formatted issuer_dn: #{issuer_dn}"
  set_session_dn(issuer_dn, 'issuer') if issuer_dn

  redirect_for_callback
end

#required_paramsObject

Specifies which attributes are required arguments to initialize



60
61
62
# File 'lib/omniauth/strategies/dice.rb', line 60

def required_params
  [:cas_server, :authentication_path]
end

#validate_required_paramsObject

Determine if required arguments are present or fail hard



65
66
67
68
69
70
71
72
# File 'lib/omniauth/strategies/dice.rb', line 65

def validate_required_params
  required_params.each do |param|
    unless options.send(param)
      error_msg = "omniauth-dice error: #{param} is required"
      fail RequiredCustomParamError, error_msg
    end
  end
end