Class: OAuth2::MCP::WorkOSAuthKit

Inherits:
Object
  • Object
show all
Defined in:
lib/oauth2/mcp.rb,
sig/oauth2/mcp.rbs

Overview

WorkOS AuthKit adapter for MCP resource-server JWT validation.

Constant Summary collapse

JWKS_PATH =

Returns:

  • (String)
"/oauth2/jwks"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(audience:, issuer: nil, subdomain: nil, client: nil, **options) ⇒ WorkOSAuthKit

Returns a new instance of WorkOSAuthKit.



279
280
281
282
283
284
285
# File 'lib/oauth2/mcp.rb', line 279

def initialize(audience:, issuer: nil, subdomain: nil, client: nil, **options)
  @issuer = normalize_issuer(issuer: issuer, subdomain: subdomain)
  @audience = audience
  @client = client || OAuth2::Client.new(nil, nil, site: @issuer, raise_errors: true)
  @algorithms = Array(options.fetch(:algorithms, ["RS256"])).map(&:to_s).freeze
  @leeway = options.fetch(:leeway, 60)
end

Instance Attribute Details

#algorithmsArray[String] (readonly)

Returns the value of attribute algorithms.

Returns:

  • (Array[String])


277
278
279
# File 'lib/oauth2/mcp.rb', line 277

def algorithms
  @algorithms
end

#audienceString (readonly)

Returns the value of attribute audience.

Returns:

  • (String)


277
278
279
# File 'lib/oauth2/mcp.rb', line 277

def audience
  @audience
end

#clientObject (readonly)

Returns the value of attribute client.

Returns:

  • (Object)


277
278
279
# File 'lib/oauth2/mcp.rb', line 277

def client
  @client
end

#issuerString (readonly)

Returns the value of attribute issuer.

Returns:

  • (String)


277
278
279
# File 'lib/oauth2/mcp.rb', line 277

def issuer
  @issuer
end

#leewayInteger (readonly)

Returns the value of attribute leeway.

Returns:

  • (Integer)


277
278
279
# File 'lib/oauth2/mcp.rb', line 277

def leeway
  @leeway
end

Instance Method Details

#call(token) ⇒ TokenClaims

Parameters:

  • token (String)

Returns:



287
288
289
# File 'lib/oauth2/mcp.rb', line 287

def call(token)
  jwt_validator.call(token)
end

#jwksHash[untyped, untyped]

Returns:

  • (Hash[untyped, untyped])


301
302
303
# File 'lib/oauth2/mcp.rb', line 301

def jwks
  @jwks ||= fetch_json(JWKS_PATH)
end

#jwt_validatorJWTValidator

Returns:



291
292
293
294
295
296
297
298
299
# File 'lib/oauth2/mcp.rb', line 291

def jwt_validator
  @jwt_validator ||= JWTValidator.new(
    jwks: jwks,
    issuer: issuer,
    audience: audience,
    algorithms: algorithms,
    leeway: leeway
  )
end