module

MultiAuth::Discovery

Class methods

discover(domain : String) : NamedTuple(site: String, authorize_url: String, token_url: String, authentication_scheme: String, user_profile_url: String | Nil, scopes: String)

Discover OAuth2 configuration from a domain using .well-known/oauth-authorization-server

Example:

config = MultiAuth::Provider::GenericOAuth2.discover("https://gitlab.com")

MultiAuth.config("my_gitlab") do |db_id, redirect_uri|
  MultiAuth::Provider::GenericOAuth2.new(
    provider_name: "GitLab",
    redirect_uri: redirect_uri,
    key: ENV["GITLAB_CLIENT_ID"],
    secret: ENV["GITLAB_CLIENT_SECRET"],
    **config,
  )
end

Returns a NamedTuple with the discovered configuration parameters

Source
fetch_oauth2_metadata(base_url : String, max_redirects : Int32 = 5) : OAuth2Metadata

grabs oauth endpoint metadata as per https://datatracker.ietf.org/doc/html/rfc8414

Source
perform_dynamic_client_registration(metadata : OAuth2Metadata, registration : ClientRegistrationRequest) : ClientRegistrationResponse

https://datatracker.ietf.org/doc/html/rfc7591

Source

Nested types