Class: OAuth2::MCP::RackMiddleware

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

Overview

Rack-compatible middleware for protecting MCP HTTP endpoints.

Constant Summary collapse

AUTHORIZATION_ENV_KEY =
"oauth2.mcp.authorization"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, resource_server:, scopes: []) ⇒ RackMiddleware

Returns a new instance of RackMiddleware.



327
328
329
330
331
# File 'lib/oauth2/mcp.rb', line 327

def initialize(app, resource_server:, scopes: [])
  @app = app
  @resource_server = resource_server
  @scopes = scopes
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def app
  @app
end

#resource_serverObject (readonly)

Returns the value of attribute resource_server.



325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def resource_server
  @resource_server
end

#scopesObject (readonly)

Returns the value of attribute scopes.



325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def scopes
  @scopes
end

Instance Method Details

#call(env) ⇒ Object



333
334
335
336
337
338
339
# File 'lib/oauth2/mcp.rb', line 333

def call(env)
  result = resource_server.authorize(request: env, scopes: scopes_for(env))
  return unauthorized_response(result) unless result.allowed?

  env[AUTHORIZATION_ENV_KEY] = result
  app.call(env)
end