class Doorkeeper::OpenidConnect::IdToken

Attributes

nonce[R]

Public Class Methods

new(access_token, nonce = nil) click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 8
def initialize(access_token, nonce = nil)
  @access_token = access_token
  @nonce = nonce
  @resource_owner = Doorkeeper::OpenidConnect.configuration.resource_owner_from_access_token.call(access_token)
  @issued_at = Time.now
end

Public Instance Methods

as_json(*_) click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 27
def as_json(*_)
  claims.reject { |_, value| value.nil? || value == '' }
end
as_jws_token() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 31
def as_jws_token
  JSON::JWT.new(as_json).sign(
    Doorkeeper::OpenidConnect.signing_key,
    Doorkeeper::OpenidConnect.signing_algorithm
  ).to_s
end
claims() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 15
def claims
  {
    iss: issuer,
    sub: subject,
    aud: audience,
    exp: expiration,
    iat: issued_at,
    nonce: nonce,
    auth_time: auth_time
  }.merge ClaimsBuilder.generate(@access_token, :id_token)
end

Private Instance Methods

audience() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 48
def audience
  @access_token.application.uid
end
auth_time() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 60
def auth_time
  Doorkeeper::OpenidConnect.configuration.auth_time_from_resource_owner.call(@resource_owner).try(:to_i)
end
expiration() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 52
def expiration
  (@issued_at.utc + Doorkeeper::OpenidConnect.configuration.expiration).to_i
end
issued_at() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 56
def issued_at
  @issued_at.utc.to_i
end
issuer() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 40
def issuer
  Doorkeeper::OpenidConnect.configuration.issuer
end
subject() click to toggle source
# File lib/doorkeeper/openid_connect/id_token.rb, line 44
def subject
  Doorkeeper::OpenidConnect.configuration.subject.call(@resource_owner, @access_token.application).to_s
end