Class: OmniauthOpenidFederation::Federation::EntityStatementBuilder
- Inherits:
-
Object
- Object
- OmniauthOpenidFederation::Federation::EntityStatementBuilder
- Defined in:
- lib/omniauth_openid_federation/federation/entity_statement_builder.rb
Overview
Entity Statement Builder for OpenID Federation 1.0
Builds self-signed entity statement JWTs for publishing provider configuration.
Instance Method Summary collapse
-
#build ⇒ String
Build and sign the entity statement JWT.
-
#initialize(issuer:, subject:, private_key:, jwks:, metadata:, expiration_seconds: 86400, kid: nil, authority_hints: nil, trust_marks: nil, trust_mark_issuers: nil, trust_mark_owners: nil, metadata_policy: nil, metadata_policy_crit: nil, constraints: nil, source_endpoint: nil, crit: nil) ⇒ EntityStatementBuilder
constructor
A new instance of EntityStatementBuilder.
Constructor Details
#initialize(issuer:, subject:, private_key:, jwks:, metadata:, expiration_seconds: 86400, kid: nil, authority_hints: nil, trust_marks: nil, trust_mark_issuers: nil, trust_mark_owners: nil, metadata_policy: nil, metadata_policy_crit: nil, constraints: nil, source_endpoint: nil, crit: nil) ⇒ EntityStatementBuilder
Returns a new instance of EntityStatementBuilder.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/omniauth_openid_federation/federation/entity_statement_builder.rb', line 55 def initialize(issuer:, subject:, private_key:, jwks:, metadata:, expiration_seconds: 86400, kid: nil, authority_hints: nil, trust_marks: nil, trust_mark_issuers: nil, trust_mark_owners: nil, metadata_policy: nil, metadata_policy_crit: nil, constraints: nil, source_endpoint: nil, crit: nil) @issuer = issuer @subject = subject @private_key = private_key @jwks = normalize_jwks(jwks) = @expiration_seconds = expiration_seconds @kid = kid || extract_kid_from_jwks(@jwks) = @trust_marks = trust_marks @trust_mark_issuers = trust_mark_issuers @trust_mark_owners = trust_mark_owners = = @constraints = constraints @source_endpoint = source_endpoint @crit = crit end |
Instance Method Details
#build ⇒ String
Build and sign the entity statement JWT
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/omniauth_openid_federation/federation/entity_statement_builder.rb', line 81 def build validate_parameters payload = build_payload # Per OpenID Federation 1.0 Section 3.1: typ MUST be "entity-statement+jwt" header = { alg: "RS256", typ: "entity-statement+jwt", kid: @kid } begin JWT.encode(payload, @private_key, "RS256", header) rescue => e error_msg = "Failed to sign entity statement: #{e.class} - #{e.message}" OmniauthOpenidFederation::Logger.error("[EntityStatementBuilder] #{error_msg}") raise SignatureError, error_msg, e.backtrace end end |