Class: Himari::Services::OidcProviderMetadataEndpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/himari/services/oidc_provider_metadata_endpoint.rb

Defined Under Namespace

Classes: Handler

Constant Summary collapse

DEFAULT_SCOPES_SUPPORTED =

Scopes and claims Himari always advertises; configured values are merged on top.

%w(openid offline_access).freeze
DEFAULT_CLAIMS_SUPPORTED =
%w(sub iss iat nbf exp).freeze

Instance Method Summary collapse

Constructor Details

#initialize(signing_key_provider:, issuer:, registration_endpoint: nil, client_id_metadata_document_supported: false, scopes_supported: [], claims_supported: []) ⇒ OidcProviderMetadataEndpoint

Returns a new instance of OidcProviderMetadataEndpoint.

Parameters:

  • signing_key_provider (Himari::ProviderChain<Himari::SigningKey>)
  • registration_endpoint (String, nil) (defaults to: nil)

    advertised when Dynamic Client Registration is enabled

  • client_id_metadata_document_supported (Boolean) (defaults to: false)

    advertised when OAuth Client ID Metadata Document support is enabled

  • scopes_supported (Array<String>) (defaults to: [])

    extra scopes to advertise alongside the defaults

  • claims_supported (Array<String>) (defaults to: [])

    extra claims to advertise alongside the defaults



15
16
17
18
19
20
21
22
# File 'lib/himari/services/oidc_provider_metadata_endpoint.rb', line 15

def initialize(signing_key_provider:, issuer:, registration_endpoint: nil, client_id_metadata_document_supported: false, scopes_supported: [], claims_supported: [])
  @signing_key_provider = signing_key_provider
  @issuer = issuer
  @registration_endpoint = registration_endpoint
  @client_id_metadata_document_supported = 
  @scopes_supported = scopes_supported
  @claims_supported = claims_supported
end

Instance Method Details

#appObject



24
25
26
# File 'lib/himari/services/oidc_provider_metadata_endpoint.rb', line 24

def app
  self
end

#call(env) ⇒ Object



28
29
30
# File 'lib/himari/services/oidc_provider_metadata_endpoint.rb', line 28

def call(env)
  Handler.new(signing_key_provider: @signing_key_provider, issuer: @issuer, registration_endpoint: @registration_endpoint, client_id_metadata_document_supported: @client_id_metadata_document_supported, scopes_supported: @scopes_supported, claims_supported: @claims_supported, env: env).response
end