class SpRailsSaml::SamlResponse

SAML2 Authentication Response.

Public Class Methods

new(saml_response, saml_setting) click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 13
def initialize(saml_response, saml_setting)
  @saml_setting = saml_setting
  @saml_response = saml_response
end

Public Instance Methods

errors() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 42
def errors
  response.errors
end
name_id() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 34
def name_id
  response.name_id
end
name_id_format() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 38
def name_id_format
  response.name_id_format
end
response() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 18
def response
  return @response if @response.present?

  @response = OneLogin::RubySaml::Response.new(
    @saml_response,
    settings: ruby_saml_settings,
    skip_subject_confirmation: SpRailsSaml::Settings::RUBY_SAML_DEFAULT_SETTINGS[:skip_subject_confirmation],
    skip_conditions: SpRailsSaml::Settings::RUBY_SAML_DEFAULT_SETTINGS[:skip_conditions],
    skip_destination: SpRailsSaml::Settings::RUBY_SAML_DEFAULT_SETTINGS[:skip_destination]
  )
end
valid?() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 30
def valid?
  response.is_valid?
end

Private Instance Methods

required_value_is_set?() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 48
def required_value_is_set?
  # ruby-samlの仕様上、idp_entity_idが空だとissuer = idp_entity_idの検証が行われないため、idp_entity_idがblankの検証は必須
  @saml_setting.idp_cert.present? && @saml_setting.idp_entity_id.present?
end
ruby_saml_settings() click to toggle source
# File lib/sp-rails-saml/saml_response.rb, line 53
def ruby_saml_settings
  raise SettingValidationError, 'lack of required setting value' unless required_value_is_set?

  settings = OneLogin::RubySaml::Settings.new

  sp_rails_saml_setting = SpRailsSaml::Settings.instance

  settings.assertion_consumer_service_url = saml_sp_consume_url(
    @saml_setting.send(sp_rails_saml_setting.account_class.to_s.downcase.to_sym).send(sp_rails_saml_setting.account_find_key)
  )
  settings.sp_entity_id = saml_sp_metadata_url(
    @saml_setting.send(sp_rails_saml_setting.account_class.to_s.downcase.to_sym).send(sp_rails_saml_setting.account_find_key)
  )
  settings.idp_cert                           = @saml_setting.idp_cert
  settings.idp_entity_id                      = @saml_setting.idp_entity_id
  settings.security[:want_assertions_signed]  =
    SpRailsSaml::Settings::RUBY_SAML_DEFAULT_SETTINGS[:want_assertions_signed]

  settings
end