Class: OmniauthOpenidFederation::Federation::EntityStatementValidator
- Inherits:
-
Object
- Object
- OmniauthOpenidFederation::Federation::EntityStatementValidator
- Defined in:
- lib/omniauth_openid_federation/federation/entity_statement_validator.rb
Overview
Entity Statement Validator for OpenID Federation 1.0
Validates entity statements according to Section 3.2.1 of the OpenID Federation 1.0 specification.
Constant Summary collapse
- JWT_PARTS_COUNT =
Standard JWT has 3 parts: header.payload.signature
3- REQUIRED_TYP =
Required typ header value for entity statements
"entity-statement+jwt"- SUPPORTED_ALGORITHMS =
Supported signing algorithms (per spec, RS256 is required by OpenID Connect Core)
%w[RS256 PS256 ES256 ES384 ES512].freeze
Instance Method Summary collapse
-
#initialize(jwt_string:, issuer_entity_configuration: nil, clock_skew_tolerance: nil) ⇒ EntityStatementValidator
constructor
Initialize validator.
-
#validate! ⇒ Hash
Validate the entity statement.
Constructor Details
#initialize(jwt_string:, issuer_entity_configuration: nil, clock_skew_tolerance: nil) ⇒ EntityStatementValidator
Initialize validator
42 43 44 45 46 47 48 49 50 |
# File 'lib/omniauth_openid_federation/federation/entity_statement_validator.rb', line 42 def initialize(jwt_string:, issuer_entity_configuration: nil, clock_skew_tolerance: nil) @jwt_string = jwt_string @issuer_entity_configuration = issuer_entity_configuration @clock_skew_tolerance = clock_skew_tolerance || OmniauthOpenidFederation.config.clock_skew_tolerance @header = nil @payload = nil @is_entity_configuration = nil @is_subordinate_statement = nil end |
Instance Method Details
#validate! ⇒ Hash
Validate the entity statement
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/omniauth_openid_federation/federation/entity_statement_validator.rb', line 56 def validate! validate_jwt_format validate_typ_header validate_alg_header validate_sub_claim validate_iss_claim determine_statement_type if @is_subordinate_statement validate_iat_claim validate_exp_claim validate_jwks_claim validate_kid_header validate_kid_matching validate_signature if @issuer_entity_configuration || @is_entity_configuration validate_crit_claim if @header && @payload && @is_entity_configuration validate_constraints_presence validate_trust_marks_presence validate_trust_mark_issuers_presence validate_trust_mark_owners_presence { header: @header, claims: @payload, is_entity_configuration: @is_entity_configuration, is_subordinate_statement: @is_subordinate_statement } end |