Class: OAuth2::MCP::TokenClaims

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

Overview

Normalized token claims returned by provider-specific validators.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subject: nil, scopes: [], audience: [], **claims) ⇒ TokenClaims

Returns a new instance of TokenClaims.



25
26
27
28
29
30
31
32
# File 'lib/oauth2/mcp.rb', line 25

def initialize(subject: nil, scopes: [], audience: [], **claims)
  @subject = subject
  @scopes = Array(scopes).flat_map { |scope| scope.to_s.split(/\s+/) }.reject(&:empty?).freeze
  @audience = Array(audience).map(&:to_s).reject(&:empty?).freeze
  @issuer = claims[:issuer]
  @expires_at = claims[:expires_at]
  @raw = (claims[:raw] || {}).freeze
end

Instance Attribute Details

#audienceObject (readonly)

Returns the value of attribute audience.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def audience
  @audience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def expires_at
  @expires_at
end

#issuerObject (readonly)

Returns the value of attribute issuer.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def issuer
  @issuer
end

#rawObject (readonly)

Returns the value of attribute raw.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def raw
  @raw
end

#scopesObject (readonly)

Returns the value of attribute scopes.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def scopes
  @scopes
end

#subjectObject (readonly)

Returns the value of attribute subject.



23
24
25
# File 'lib/oauth2/mcp.rb', line 23

def subject
  @subject
end

Class Method Details

.from_hash(hash) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/oauth2/mcp.rb', line 35

def from_hash(hash)
  new(
    subject: first_value(hash, :subject, "subject", :sub, "sub"),
    scopes: first_value(hash, :scopes, "scopes", :scope, "scope") || [],
    audience: first_value(hash, :audience, "audience", :aud, "aud") || [],
    issuer: first_value(hash, :issuer, "issuer", :iss, "iss"),
    expires_at: first_value(hash, :expires_at, "expires_at", :exp, "exp"),
    raw: hash,
  )
end

Instance Method Details

#audience_includes?(resource) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/oauth2/mcp.rb', line 66

def audience_includes?(resource)
  audience.include?(resource.to_s)
end

#expired?(now: Time.now) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
59
60
# File 'lib/oauth2/mcp.rb', line 56

def expired?(now: Time.now)
  return false unless expires_at

  Time.at(expires_at.to_i) <= now
end

#scopes_include?(required_scopes) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/oauth2/mcp.rb', line 62

def scopes_include?(required_scopes)
  (Array(required_scopes).map(&:to_s) - scopes).empty?
end