Sha256: dfe3b5f7c5ecdd5cf2f53b34f797e68c3a9deb47e24d3f68fc0d538393b7c1f4

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true
module Masks
  module OpenID
    class DiscoveriesController < ApplicationController
      before_action :find_client

      def jwks
        jwks =
          JSON::JWK::Set.new(
            JSON::JWK.new(client.public_key, use: :sig, kid: client.kid)
          )

        render json: jwks
      end

      def new
        render json:
                 OpenIDConnect::Discovery::Provider::Config::Response.new(
                   issuer: client.issuer,
                   authorization_endpoint: openid_authorization_url,
                   token_endpoint: openid_token_url,
                   userinfo_endpoint: openid_userinfo_url,
                   jwks_uri: openid_jwks_url,
                   #  registration_endpoint: site_url, # TODO
                   scopes_supported: client.scopes,
                   response_types_supported: client.response_types,
                   grant_types_supported: client.grant_types,
                   claims_parameter_supported: false,
                   request_parameter_supported: false,
                   request_uri_parameter_supported: false,
                   subject_types_supported: [
                     client.pairwise_subject? ? "pairwise" : "public"
                   ],
                   id_token_signing_alg_values_supported: [:RS256],
                   token_endpoint_auth_methods_supported: %w[
                     client_secret_basic
                     client_secret_post
                   ],
                   claims_supported: %w[sub iss name email address phone_number]
                 )
      end

      private

      def find_client
        head :not_found unless client
      end

      def client
        @client ||=
          Masks.configuration.model(:openid_client).find_by(key: params[:id])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
masks-0.4.0 app/controllers/masks/openid/discoveries_controller.rb