@ -8,7 +8,8 @@ Devise.setup do |config|
# CAS strategy
if ENV [ 'CAS_ENABLED' ] == 'true'
cas_options = options
cas_options = { }
cas_options [ :display_name ] = ENV [ 'CAS_DISPLAY_NAME' ] || 'cas'
cas_options [ :url ] = ENV [ 'CAS_URL' ] if ENV [ 'CAS_URL' ]
cas_options [ :host ] = ENV [ 'CAS_HOST' ] if ENV [ 'CAS_HOST' ]
cas_options [ :port ] = ENV [ 'CAS_PORT' ] if ENV [ 'CAS_PORT' ]
@ -36,7 +37,8 @@ Devise.setup do |config|
# SAML strategy
if ENV [ 'SAML_ENABLED' ] == 'true'
saml_options = options
saml_options = { }
saml_options [ :display_name ] = ENV [ 'SAML_DISPLAY_NAME' ] || 'saml'
saml_options [ :assertion_consumer_service_url ] = ENV [ 'SAML_ACS_URL' ] if ENV [ 'SAML_ACS_URL' ]
saml_options [ :issuer ] = ENV [ 'SAML_ISSUER' ] if ENV [ 'SAML_ISSUER' ]
saml_options [ :idp_sso_target_url ] = ENV [ 'SAML_IDP_SSO_TARGET_URL' ] if ENV [ 'SAML_IDP_SSO_TARGET_URL' ]
@ -64,4 +66,39 @@ Devise.setup do |config|
saml_options [ :allowed_clock_drift ] = ENV [ 'SAML_ALLOWED_CLOCK_DRIFT' ] if ENV [ 'SAML_ALLOWED_CLOCK_DRIFT' ]
config . omniauth :saml , saml_options
end
# OpenID Connect Strategy
if ENV [ 'OIDC_ENABLED' ] == 'true'
oidc_options = { }
oidc_options [ :display_name ] = ENV [ 'OIDC_DISPLAY_NAME' ] || 'openid_connect' #OPTIONAL
oidc_options [ :issuer ] = ENV [ 'OIDC_ISSUER' ] if ENV [ 'OIDC_ISSUER' ] #NEED
oidc_options [ :discovery ] = ENV [ 'OIDC_DISCOVERY' ] == 'true' if ENV [ 'OIDC_DISCOVERY' ] #OPTIONAL (default: false)
oidc_options [ :client_auth_method ] = ENV [ 'OIDC_CLIENT_AUTH_METHOD' ] if ENV [ 'OIDC_CLIENT_AUTH_METHOD' ] #OPTIONAL (default: basic)
scope_string = ENV [ 'OIDC_SCOPE' ] if ENV [ 'OIDC_SCOPE' ] #NEED
scopes = scope_string . split ( ',' )
oidc_options [ :scope ] = scopes . map { | x | x . to_sym }
oidc_options [ :response_type ] = ENV [ 'OIDC_RESPONSE_TYPE' ] if ENV [ 'OIDC_RESPONSE_TYPE' ] #OPTIONAL (default: code)
oidc_options [ :response_mode ] = ENV [ 'OIDC_RESPONSE_MODE' ] if ENV [ 'OIDC_RESPONSE_MODE' ] #OPTIONAL (default: query)
oidc_options [ :display ] = ENV [ 'OIDC_DISPLAY' ] if ENV [ 'OIDC_DISPLAY' ] #OPTIONAL (default: page)
oidc_options [ :prompt ] = ENV [ 'OIDC_PROMPT' ] if ENV [ 'OIDC_PROMPT' ] #OPTIONAL
oidc_options [ :send_nonce ] = ENV [ 'OIDC_SEND_NONCE' ] == 'true' if ENV [ 'OIDC_SEND_NONCE' ] #OPTIONAL (default: true)
oidc_options [ :send_scope_to_token_endpoint ] = ENV [ 'OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT' ] == 'true' if ENV [ 'OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT' ] #OPTIONAL (default: true)
oidc_options [ :post_logout_redirect_uri ] = ENV [ 'OIDC_IDP_LOGOUT_REDIRECT_URI' ] if ENV [ 'OIDC_IDP_LOGOUT_REDIRECT_URI' ] #OPTIONAL
oidc_options [ :uid_field ] = ENV [ 'OIDC_UID_FIELD' ] if ENV [ 'OIDC_UID_FIELD' ] #NEED
oidc_options [ :client_options ] = { }
oidc_options [ :client_options ] [ :identifier ] = ENV [ 'OIDC_CLIENT_ID' ] if ENV [ 'OIDC_CLIENT_ID' ] #NEED
oidc_options [ :client_options ] [ :secret ] = ENV [ 'OIDC_CLIENT_SECRET' ] if ENV [ 'OIDC_CLIENT_SECRET' ] #NEED
oidc_options [ :client_options ] [ :redirect_uri ] = ENV [ 'OIDC_REDIRECT_URI' ] if ENV [ 'OIDC_REDIRECT_URI' ] #NEED
oidc_options [ :client_options ] [ :scheme ] = ENV [ 'OIDC_HTTP_SCHEME' ] if ENV [ 'OIDC_HTTP_SCHEME' ] #OPTIONAL (default: https)
oidc_options [ :client_options ] [ :host ] = ENV [ 'OIDC_HOST' ] if ENV [ 'OIDC_HOST' ] #OPTIONAL
oidc_options [ :client_options ] [ :port ] = ENV [ 'OIDC_PORT' ] if ENV [ 'OIDC_PORT' ] #OPTIONAL
oidc_options [ :client_options ] [ :authorization_endpoint ] = ENV [ 'OIDC_AUTH_ENDPOINT' ] if ENV [ 'OIDC_AUTH_ENDPOINT' ] #NEED when discovery != true
oidc_options [ :client_options ] [ :token_endpoint ] = ENV [ 'OIDC_TOKEN_ENDPOINT' ] if ENV [ 'OIDC_TOKEN_ENDPOINT' ] #NEED when discovery != true
oidc_options [ :client_options ] [ :userinfo_endpoint ] = ENV [ 'OIDC_USER_INFO_ENDPOINT' ] if ENV [ 'OIDC_USER_INFO_ENDPOINT' ] #NEED when discovery != true
oidc_options [ :client_options ] [ :jwks_uri ] = ENV [ 'OIDC_JWKS_URI' ] if ENV [ 'OIDC_JWKS_URI' ] #NEED when discovery != true
oidc_options [ :client_options ] [ :end_session_endpoint ] = ENV [ 'OIDC_END_SESSION_ENDPOINT' ] if ENV [ 'OIDC_END_SESSION_ENDPOINT' ] #OPTIONAL
oidc_options [ :security ] = { }
oidc_options [ :security ] [ :assume_email_is_verified ] = ENV [ 'OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED' ] == 'true' #OPTIONAL
config . omniauth :openid_connect , oidc_options
end
end