Class: RailsAiBridge::Mcp::Auth::Strategies::Jwt
- Inherits:
-
BaseStrategy
- Object
- BaseStrategy
- RailsAiBridge::Mcp::Auth::Strategies::Jwt
- Defined in:
- lib/rails_ai_bridge/mcp/auth/strategies/jwt.rb
Overview
Authenticates HTTP MCP requests by decoding a Bearer JWT via a host-provided lambda. No JWT gem is required by this gem — the host application supplies its own decoding logic.
Instance Method Summary collapse
-
#authenticate(request) ⇒ AuthResult
Authenticates the incoming request.
-
#initialize(decoder:) ⇒ Jwt
constructor
A new instance of Jwt.
Methods inherited from BaseStrategy
Constructor Details
#initialize(decoder:) ⇒ Jwt
Returns a new instance of Jwt.
23 24 25 26 27 28 |
# File 'lib/rails_ai_bridge/mcp/auth/strategies/jwt.rb', line 23 def initialize(decoder:) super() raise ArgumentError, "decoder must respond to #call (got #{decoder.class})" if !decoder.nil? && !decoder.respond_to?(:call) @decoder = decoder end |
Instance Method Details
#authenticate(request) ⇒ AuthResult
Authenticates the incoming request.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/rails_ai_bridge/mcp/auth/strategies/jwt.rb', line 34 def authenticate(request) token = extract_bearer(request) return AuthResult.fail(:missing_token) if token.blank? return AuthResult.fail(:misconfigured) if @decoder.nil? payload, err = decode_token(token) return AuthResult.fail(err) if err return AuthResult.fail(:unauthorized) if payload.nil? || payload == false AuthResult.ok(payload) end |