Как проверить, истек ли сеанс OKTA SAML? - PullRequest
0 голосов
/ 20 марта 2020

Я интегрирую OKTA в мое приложение Rails с ruby -2.5.2 и rails 5.1. Я использую SAML и гем ruby -saml. Я могу успешно аутентифицировать пользователя, но не могу получить время окончания сеанса OKTA. ниже мой код: -

SamlController.rb
class SamlController < ApplicationController
  skip_before_action :verify_authenticity_token

  def init
    request = OneLogin::RubySaml::Authrequest.new
    redirect_to(request.create(saml_settings))
  end

  def consume
    response = OneLogin::RubySaml::Response.new(params[:SAMLResponse])
    request = OneLogin::RubySaml::Authrequest.new
    response.settings = saml_settings

    if response.is_valid?
      session[:okta_fmno] = response.attributes[:FMNO]
      redirect_to root_path
    else
      render :json => {'error': 'OKTA authentication not detected'}
    end
  end

  private

  def saml_settings
    settings = OneLogin::RubySaml::Settings.new
    settings.assertion_consumer_service_url = SAML_CONSUMER_SERVICE_URL
    settings.issuer                         = SAML_ISSUER
    settings.idp_sso_target_url             = IDP_SSO_TARGET_URL
    settings.idp_cert                       = IDP_CERT
    settings.name_identifier_format         = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
    settings
  end
end

Я также пытался использовать response.not_on_or_after, но, похоже, он не возвращает правильное время истечения сеанса, потому что по умолчанию время истечения сеанса OKTA установлено на 2 часа, но этот метод возвращает 10 минут. Пожалуйста, помогите мне узнать правильное время истечения сессии. Заранее спасибо.

...