udap_security_test_kit 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/lib/udap_security_test_kit/authorization_code_received_test.rb +8 -0
  3. data/lib/udap_security_test_kit/authorization_code_redirect_test.rb +3 -0
  4. data/lib/udap_security_test_kit/authorization_code_token_exchange_test.rb +2 -0
  5. data/lib/udap_security_test_kit/authorization_endpoint_field_test.rb +5 -1
  6. data/lib/udap_security_test_kit/client_suite/access_ac_group.rb +2 -0
  7. data/lib/udap_security_test_kit/client_suite/authorization_request_verification_test.rb +5 -0
  8. data/lib/udap_security_test_kit/client_suite/registration_ac_verification_test.rb +34 -0
  9. data/lib/udap_security_test_kit/client_suite/registration_cc_verification_test.rb +30 -0
  10. data/lib/udap_security_test_kit/client_suite/token_request_ac_verification_test.rb +47 -0
  11. data/lib/udap_security_test_kit/client_suite/token_request_cc_verification_test.rb +25 -0
  12. data/lib/udap_security_test_kit/client_suite.rb +11 -0
  13. data/lib/udap_security_test_kit/discovery_group.rb +2 -0
  14. data/lib/udap_security_test_kit/dynamic_client_registration_group.rb +3 -0
  15. data/lib/udap_security_test_kit/endpoints/mock_udap_server.rb +2 -2
  16. data/lib/udap_security_test_kit/grant_types_supported_field_test.rb +3 -0
  17. data/lib/udap_security_test_kit/reg_endpoint_jwt_signing_alg_values_supported_field_test.rb +6 -0
  18. data/lib/udap_security_test_kit/registration_endpoint_field_test.rb +3 -0
  19. data/lib/udap_security_test_kit/registration_failure_invalid_contents_test.rb +4 -1
  20. data/lib/udap_security_test_kit/registration_failure_invalid_jwt_signature_test.rb +2 -0
  21. data/lib/udap_security_test_kit/registration_success_contents_test.rb +3 -0
  22. data/lib/udap_security_test_kit/registration_success_test.rb +3 -0
  23. data/lib/udap_security_test_kit/requirements/generated/udap-security-test-kit_requirements_coverage.csv +317 -0
  24. data/lib/udap_security_test_kit/requirements/generated/udap_security_client_requirements_coverage.csv +146 -0
  25. data/lib/udap_security_test_kit/requirements/generated/udap_security_requirements_coverage.csv +164 -0
  26. data/lib/udap_security_test_kit/requirements/hl7.fhir.us.udap-security_1.0.0_reqs.xlsx +0 -0
  27. data/lib/udap_security_test_kit/requirements/udap_security_test_kit_requirements.csv +308 -0
  28. data/lib/udap_security_test_kit/signed_metadata_contents_test.rb +17 -0
  29. data/lib/udap_security_test_kit/signed_metadata_field_test.rb +4 -1
  30. data/lib/udap_security_test_kit/token_endpoint_auth_methods_supported_field_test.rb +2 -0
  31. data/lib/udap_security_test_kit/token_endpoint_auth_signing_alg_values_supported_field_test.rb +5 -0
  32. data/lib/udap_security_test_kit/token_endpoint_field_test.rb +3 -0
  33. data/lib/udap_security_test_kit/udap_auth_extensions_required_field_test.rb +3 -0
  34. data/lib/udap_security_test_kit/udap_auth_extensions_supported_field_test.rb +3 -0
  35. data/lib/udap_security_test_kit/udap_certifications_required_field_test.rb +3 -0
  36. data/lib/udap_security_test_kit/udap_certifications_supported_field_test.rb +2 -0
  37. data/lib/udap_security_test_kit/udap_profiles_supported_field_test.rb +5 -0
  38. data/lib/udap_security_test_kit/udap_versions_supported_field_test.rb +2 -0
  39. data/lib/udap_security_test_kit/version.rb +2 -2
  40. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/b2b_authorization_extension_object_test.rb +77 -0
  41. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/client_authorization_code_usage_test.rb +47 -0
  42. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/client_security_csrf_protection_test.rb +50 -0
  43. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/cryptographic_algorithms_test.rb +44 -0
  44. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/data_holder_auth_request_scope_test.rb +42 -0
  45. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/idp_authentication_compliance_test.rb +44 -0
  46. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/idp_supports_required_scopes_test.rb +42 -0
  47. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/jti_reuse_prevention_test.rb +44 -0
  48. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/metadata_interpretation_test.rb +47 -0
  49. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/oauth2_protocol_compliance_test.rb +50 -0
  50. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/preferred_identity_provider_test.rb +45 -0
  51. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/private_key_authentication_test.rb +47 -0
  52. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/resource_holder_authentication_test.rb +45 -0
  53. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/software_statement_registration_test.rb +49 -0
  54. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/token_request_authentication_test.rb +51 -0
  55. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/trust_community_query_parameters_test.rb +43 -0
  56. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client/validation_confidentiality_test.rb +49 -0
  57. data/lib/udap_security_test_kit/visual_inspection_and_attestation/client_attestation_group.rb +48 -0
  58. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group/authentication_request_construction_test.rb +56 -0
  59. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group/authentication_request_validation_test.rb +60 -0
  60. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group.rb +13 -0
  61. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/access_token_lifetime_test.rb +42 -0
  62. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/access_token_request_validation_test.rb +51 -0
  63. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/authorization_code_usage_test.rb +45 -0
  64. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/resource_holder_authorization_flow_test.rb +37 -0
  65. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group.rb +17 -0
  66. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group/client_certificate_storage_test.rb +36 -0
  67. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group/no_client_credentials_native_apps_test.rb +38 -0
  68. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group.rb +13 -0
  69. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/certification_handling_test.rb +45 -0
  70. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/client_id_modification_test.rb +42 -0
  71. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/dynamic_client_registration_validation_test.rb +48 -0
  72. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group.rb +15 -0
  73. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/deny_token_request_test.rb +42 -0
  74. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/general_error_response_test.rb +39 -0
  75. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_id_token_test.rb +43 -0
  76. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_idp_test.rb +39 -0
  77. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_redirection_uri_test.rb +43 -0
  78. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/prompt_none_test.rb +39 -0
  79. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/state_mismatch_test.rb +43 -0
  80. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/unauthenticated_user_test.rb +42 -0
  81. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/valid_state_error_response_test.rb +43 -0
  82. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group.rb +27 -0
  83. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/access_token_validation_test.rb +47 -0
  84. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/id_token_validation_test.rb +45 -0
  85. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/token_response_validation_test.rb +47 -0
  86. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group.rb +15 -0
  87. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_authentication_request_test.rb +45 -0
  88. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_dynamic_registration_test.rb +45 -0
  89. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_metadata_validation_test.rb +44 -0
  90. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_token_exchange_test.rb +46 -0
  91. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group.rb +17 -0
  92. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_certificate_chain_validation_test.rb +36 -0
  93. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_grant_parameter_validation_test.rb +36 -0
  94. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_jti_reuse_test.rb +35 -0
  95. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_signature_validation_test.rb +36 -0
  96. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_token_request_validation_test.rb +43 -0
  97. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group.rb +19 -0
  98. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_authorization_extensions_required_test.rb +43 -0
  99. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_community_parameter_support_test.rb +44 -0
  100. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_metadata_endpoint_error_handling_test.rb +43 -0
  101. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_metadata_representation_test.rb +42 -0
  102. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_profiles_supported_test.rb +43 -0
  103. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group.rb +19 -0
  104. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/csrf_protection_test.rb +49 -0
  105. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/obtain_authorization_scopes_test.rb +44 -0
  106. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/state_parameter_test.rb +48 -0
  107. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/unauthenticated_client_security_test.rb +47 -0
  108. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group.rb +17 -0
  109. data/lib/udap_security_test_kit/visual_inspection_and_attestation/server_attestation_group.rb +33 -0
  110. data/lib/udap_security_test_kit/well_known_endpoint_test.rb +4 -0
  111. data/lib/udap_security_test_kit.rb +10 -0
  112. metadata +85 -4
@@ -0,0 +1,42 @@
1
+ module UDAPSecurityTestKit
2
+ class UDAPMetadataRepresentationAttestationTest < Inferno::Test
3
+ title 'Represents server capabilities correctly'
4
+ id :udap_security_metadata_representation
5
+ description %(
6
+ Server's UDAP metadata endpoint correctly represents the server’s capabilities with respect to the UDAP
7
+ workflows described in the guide.
8
+ )
9
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@18'
10
+
11
+ input :udap_metadata_representation_correct,
12
+ title: 'UDAP Metadata and Server Capabilities: Represents server capabilities correctly',
13
+ description: %(
14
+ I attest that the server's UDAP metadata endpoint correctly represents the server’s capabilities with
15
+ respect to the UDAP workflows described in the guide.
16
+ ),
17
+ type: 'radio',
18
+ default: 'false',
19
+ options: {
20
+ list_options: [
21
+ {
22
+ label: 'Yes',
23
+ value: 'true'
24
+ },
25
+ {
26
+ label: 'No',
27
+ value: 'false'
28
+ }
29
+ ]
30
+ }
31
+ input :udap_metadata_representation_note,
32
+ title: 'Notes, if applicable:',
33
+ type: 'textarea',
34
+ optional: true
35
+
36
+ run do
37
+ assert udap_metadata_representation_correct == 'true',
38
+ 'Server metadata does not correctly represent the server’s capabilities with respect to UDAP workflows.'
39
+ pass udap_metadata_representation_note if udap_metadata_representation_note.present?
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,43 @@
1
+ module UDAPSecurityTestKit
2
+ class UDAPProfilesSupportedAttestationTest < Inferno::Test
3
+ title 'Includes supported profiles'
4
+ id :udap_security_profiles_supported
5
+ description %(
6
+ Server's UDAP metadata includes the `udap_profiles_supported` element with `udap_to` if the
7
+ server supports the user authentication workflow described in Section 6.
8
+ )
9
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@27'
10
+
11
+ input :udap_profiles_supported_correct,
12
+ title: 'UDAP Metadata and Server Capabilities: Includes supported profiles',
13
+ description: %(
14
+ I attest that the server's UDAP metadata includes the `udap_profiles_supported` element with `udap_to`
15
+ if the server supports the user authentication workflow described in Section 6.
16
+ ),
17
+ type: 'radio',
18
+ default: 'false',
19
+ options: {
20
+ list_options: [
21
+ {
22
+ label: 'Yes',
23
+ value: 'true'
24
+ },
25
+ {
26
+ label: 'No',
27
+ value: 'false'
28
+ }
29
+ ]
30
+ }
31
+ input :udap_profiles_supported_note,
32
+ title: 'Notes, if applicable:',
33
+ type: 'textarea',
34
+ optional: true
35
+
36
+ run do
37
+ assert udap_profiles_supported_correct == 'true',
38
+ 'Server metadata does not include the `udap_profiles_supported` element with `udap_to` for UDAP
39
+ Tiered OAuth for User Authentication.'
40
+ pass udap_profiles_supported_note if udap_profiles_supported_note.present?
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'metadata_server_capabilities_group/udap_authorization_extensions_required_test'
2
+ require_relative 'metadata_server_capabilities_group/udap_community_parameter_support_test'
3
+ require_relative 'metadata_server_capabilities_group/udap_metadata_endpoint_error_handling_test'
4
+ require_relative 'metadata_server_capabilities_group/udap_metadata_representation_test'
5
+ require_relative 'metadata_server_capabilities_group/udap_profiles_supported_test'
6
+
7
+ module UDAPSecurityTestKit
8
+ class MetadataServerCapabilitiesAttestationGroup < Inferno::TestGroup
9
+ id :udap_server_v100_metadata_server_capabilities_group
10
+ title 'UDAP Metadata and Server Capabilities'
11
+
12
+ run_as_group
13
+ test from: :udap_security_authorization_extensions_required
14
+ test from: :udap_security_community_parameter_support
15
+ test from: :udap_security_metadata_error_handling
16
+ test from: :udap_security_metadata_representation
17
+ test from: :udap_security_profiles_supported
18
+ end
19
+ end
@@ -0,0 +1,49 @@
1
+ module UDAPSecurityTestKit
2
+ class CSRFProtectionAttestationTest < Inferno::Test
3
+ title 'Implements CSRF and Clickjacking protection'
4
+ id :udap_security_csrf_protection
5
+ description %(
6
+ Authorization Server implements CSRF and Clickjacking protection as
7
+ described in [RFC6749](https://openid.net/specs/openid-connect-core-1_0.html#RFC6749),
8
+ including:
9
+ - Use of anti-CSRF tokens.
10
+ - Validation of `state` parameter to prevent cross-site request forgery.
11
+ )
12
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@278',
13
+ 'hl7.fhir.us.udap-security_1.0.0@269'
14
+
15
+ input :csrf_protection_implemented,
16
+ title: 'Security Measures: Implements CSRF and Clickjacking protection',
17
+ description: %(
18
+ I attest that the Authorization Server implements CSRF and Clickjacking protection as
19
+ described in [RFC6749](https://openid.net/specs/openid-connect-core-1_0.html#RFC6749),
20
+ including:
21
+ - Use of anti-CSRF tokens.
22
+ - Validation of `state` parameter to prevent cross-site request forgery.
23
+ ),
24
+ type: 'radio',
25
+ default: 'false',
26
+ options: {
27
+ list_options: [
28
+ {
29
+ label: 'Yes',
30
+ value: 'true'
31
+ },
32
+ {
33
+ label: 'No',
34
+ value: 'false'
35
+ }
36
+ ]
37
+ }
38
+ input :csrf_protection_note,
39
+ title: 'Notes, if applicable:',
40
+ type: 'textarea',
41
+ optional: true
42
+
43
+ run do
44
+ assert csrf_protection_implemented == 'true',
45
+ 'Authorization Server does not implement CSRF protection as described in RFC6749.'
46
+ pass csrf_protection_note if csrf_protection_note.present?
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,44 @@
1
+ module UDAPSecurityTestKit
2
+ class ObtainAuthorizationScopesAttestationTest < Inferno::Test
3
+ title 'Obtains user authorization for requested scopes'
4
+ id :udap_security_user_authorization
5
+ description %(
6
+ Resource Holder, after mapping the authenticated user, obtains authorization from the user for the scopes
7
+ requested by the client app, if such authorization is required, as per Section [4.5 of UDAP Tiered OAuth](https://www.udap.org/udap-user-auth-stu1.html),
8
+ returning to the workflow defined in [Section 4.1](https://hl7.org/fhir/us/udap-security/STU1/consumer.html#obtaining-an-authorization-code)
9
+ or [Section 5.1](https://hl7.org/fhir/us/udap-security/STU1/b2b.html#obtaining-an-authorization-code) of this
10
+ guide, for consumer-facing or B2B apps, respectively.
11
+ )
12
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@297'
13
+
14
+ input :user_authorization_correct,
15
+ title: 'Security Measures: Obtains user authorization for requested scopes',
16
+ description: %(
17
+ I attest that the Resource Holder, after mapping the authenticated user, obtains authorization from the
18
+ user for the scopes requested by the client app, if such authorization is required, as per Section
19
+ [4.5 of UDAP Tiered OAuth](https://www.udap.org/udap-user-auth-stu1.html), returning to the workflow
20
+ defined in [Section 4.1](https://hl7.org/fhir/us/udap-security/STU1/consumer.html#obtaining-an-authorization-code)
21
+ or [Section 5.1](https://hl7.org/fhir/us/udap-security/STU1/b2b.html#obtaining-an-authorization-code) of
22
+ this guide, for consumer-facing or B2B apps, respectively.
23
+ ),
24
+ type: 'radio',
25
+ default: 'false',
26
+ options: {
27
+ list_options: [
28
+ { label: 'Yes', value: 'true' },
29
+ { label: 'No', value: 'false' }
30
+ ]
31
+ }
32
+ input :user_authorization_note,
33
+ title: 'Notes, if applicable:',
34
+ type: 'textarea',
35
+ optional: true
36
+
37
+ run do
38
+ assert user_authorization_correct == 'true',
39
+ 'Resource Holder does not obtain user authorization for the requested scopes after mapping the
40
+ authenticated user.'
41
+ pass user_authorization_note if user_authorization_note.present?
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,48 @@
1
+ module UDAPSecurityTestKit
2
+ class StateParameterAttestationTest < Inferno::Test
3
+ title 'Manages state parameter securely'
4
+ id :udap_security_state_parameter_management
5
+ description %(
6
+ The Resource Holder:
7
+ - Generates its own random value for the state parameter (does not reuse the value provided by the Client App).
8
+ - Validates that the value of the state parameter in the query string matches the value it generated when the
9
+ user is redirected back from the IdP.
10
+ - Validates the value of the state parameter when receiving an error response from the IdP.
11
+ )
12
+ verifies_requirements(
13
+ 'hl7.fhir.us.udap-security_1.0.0@254',
14
+ 'hl7.fhir.us.udap-security_1.0.0@255',
15
+ 'hl7.fhir.us.udap-security_1.0.0@270',
16
+ 'hl7.fhir.us.udap-security_1.0.0@272'
17
+ )
18
+
19
+ input :state_parameter_management_correct,
20
+ title: 'Security Measures: Manages state parameter securely',
21
+ description: %(
22
+ I attest that the Resource Holder:
23
+ - Generates its own random value for the state parameter and does not reuse the value provided by the
24
+ Client App.
25
+ - Validates that the value of the state parameter in the query string matches the value it generated
26
+ when the user is redirected back from the IdP.
27
+ - Validates the value of the state parameter when receiving an error response from the IdP.
28
+ ),
29
+ type: 'radio',
30
+ default: 'false',
31
+ options: {
32
+ list_options: [
33
+ { label: 'Yes', value: 'true' },
34
+ { label: 'No', value: 'false' }
35
+ ]
36
+ }
37
+ input :state_parameter_management_note,
38
+ title: 'Notes, if applicable:',
39
+ type: 'textarea',
40
+ optional: true
41
+
42
+ run do
43
+ assert state_parameter_management_correct == 'true',
44
+ 'Resource Holder does not properly generate or validate the state parameter as required.'
45
+ pass state_parameter_management_note if state_parameter_management_note.present?
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,47 @@
1
+ module UDAPSecurityTestKit
2
+ class UnauthenticatedClientSecurityAttestationTest < Inferno::Test
3
+ title 'Considers security measures for unauthenticated clients'
4
+ id :udap_security_unauthenticated_clients
5
+ description %(
6
+ I attest that the Authorization Server considers security implications when interacting with unauthenticated
7
+ clients, including:
8
+ - Restricting access to sensitive endpoints.
9
+ - Implementing rate limiting or other protective measures.
10
+ )
11
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@288'
12
+
13
+ input :unauthenticated_client_security_measures,
14
+ title: 'Security Measures: Considers security measures for unauthenticated clients',
15
+ description: %(
16
+ I attest that the Authorization Server considers security implications when interacting with unauthenticated
17
+ clients, including:
18
+ - Restricting access to sensitive endpoints.
19
+ - Implementing rate limiting or other protective measures.
20
+ ),
21
+ type: 'radio',
22
+ default: 'false',
23
+ options: {
24
+ list_options: [
25
+ {
26
+ label: 'Yes',
27
+ value: 'true'
28
+ },
29
+ {
30
+ label: 'No',
31
+ value: 'false'
32
+ }
33
+ ]
34
+ }
35
+ input :unauthenticated_client_security_note,
36
+ title: 'Notes, if applicable:',
37
+ type: 'textarea',
38
+ optional: true
39
+
40
+ run do
41
+ assert unauthenticated_client_security_measures == 'true',
42
+ 'Authorization Server does not consider security implications when interacting with unauthenticated
43
+ clients.'
44
+ pass unauthenticated_client_security_note if unauthenticated_client_security_note.present?
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'security_measures_group/csrf_protection_test'
2
+ require_relative 'security_measures_group/state_parameter_test'
3
+ require_relative 'security_measures_group/obtain_authorization_scopes_test'
4
+ require_relative 'security_measures_group/unauthenticated_client_security_test'
5
+
6
+ module UDAPSecurityTestKit
7
+ class SecurityMeasuresAttestationGroup < Inferno::TestGroup
8
+ id :udap_server_v100_security_measures_group
9
+ title 'Security Measures'
10
+
11
+ run_as_group
12
+ test from: :udap_security_csrf_protection
13
+ test from: :udap_security_state_parameter_management
14
+ test from: :udap_security_unauthenticated_clients
15
+ test from: :udap_security_user_authorization
16
+ end
17
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'server/metadata_server_capabilities_group'
2
+ require_relative 'server/client_authentication_group'
3
+ require_relative 'server/dynamic_client_registration_group'
4
+ require_relative 'server/authorization_code_token_requests_group'
5
+ require_relative 'server/authentication_requests_group'
6
+ require_relative 'server/id_token_access_token_validation_group'
7
+ require_relative 'server/error_handling_group'
8
+ require_relative 'server/security_measures_group'
9
+ require_relative 'server/identity_provider_interaction_group'
10
+ require_relative 'server/jwt_security_group'
11
+
12
+ module UDAPSecurityTestKit
13
+ class ServerAttestationGroup < Inferno::TestGroup
14
+ id :udap_server_v100_visual_inspection_and_attestation
15
+ title 'Visual Inspection and Attestation'
16
+ optional
17
+
18
+ description <<~DESCRIPTION
19
+ Perform visual inspections or attestations to ensure that the Server is conformant to the UDAP IG requirements.
20
+ DESCRIPTION
21
+
22
+ group from: :udap_server_v100_metadata_server_capabilities_group
23
+ group from: :udap_server_v100_dynamic_client_registration_group
24
+ group from: :udap_server_v100_authorization_code_token_requests_group
25
+ group from: :udap_server_v100_authentication_requests_group
26
+ group from: :udap_server_v100_id_token_access_token_validation_group
27
+ group from: :udap_server_v100_error_handling_group
28
+ group from: :udap_server_v100_security_measures_group
29
+ group from: :udap_server_v100_client_authentication_group
30
+ group from: :udap_server_v100_jwt_security_group
31
+ group from: :udap_server_v100_identity_provider_interaction_group
32
+ end
33
+ end
@@ -28,6 +28,10 @@ module UDAPSecurityTestKit
28
28
  output :udap_well_known_metadata_json
29
29
  makes_request :config
30
30
 
31
+ verifies_requirements 'hl7.fhir.us.udap-security_1.0.0@12',
32
+ 'hl7.fhir.us.udap-security_1.0.0@13',
33
+ 'hl7.fhir.us.udap-security_1.0.0@14'
34
+
31
35
  run do
32
36
  uri = URI.parse("#{udap_fhir_base_url.strip.chomp('/')}/.well-known/udap")
33
37
  unless udap_community_parameter.blank?
@@ -3,6 +3,7 @@ require_relative 'udap_security_test_kit/authorization_code_group'
3
3
  require_relative 'udap_security_test_kit/client_credentials_group'
4
4
  require_relative 'udap_security_test_kit/redirect_uri'
5
5
  require_relative 'udap_security_test_kit/metadata'
6
+ require_relative 'udap_security_test_kit/visual_inspection_and_attestation/server_attestation_group'
6
7
 
7
8
  module UDAPSecurityTestKit
8
9
  class Suite < Inferno::TestSuite
@@ -32,6 +33,14 @@ module UDAPSecurityTestKit
32
33
  (which is not a required capability).
33
34
  )
34
35
 
36
+ requirement_sets(
37
+ {
38
+ identifier: 'hl7.fhir.us.udap-security_1.0.0',
39
+ title: 'Security for Scalable Registration, Authentication, and Authorization (UDAP)',
40
+ actor: 'Server'
41
+ }
42
+ )
43
+
35
44
  input_instructions %(
36
45
  This menu will execute tests for both OAuth flows.
37
46
 
@@ -85,5 +94,6 @@ module UDAPSecurityTestKit
85
94
 
86
95
  group from: :udap_authorization_code_group
87
96
  group from: :udap_client_credentials_group
97
+ group from: :udap_server_v100_visual_inspection_and_attestation
88
98
  end
89
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: udap_security_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
@@ -9,22 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-05-14 00:00:00.000000000 Z
12
+ date: 2025-07-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: inferno_core
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.0'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
- version: 0.6.1
23
+ version: 1.0.2
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.0'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
- version: 0.6.1
33
+ version: 1.0.2
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: jwt
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -110,6 +116,11 @@ files:
110
116
  - lib/udap_security_test_kit/registration_failure_invalid_jwt_signature_test.rb
111
117
  - lib/udap_security_test_kit/registration_success_contents_test.rb
112
118
  - lib/udap_security_test_kit/registration_success_test.rb
119
+ - lib/udap_security_test_kit/requirements/generated/udap-security-test-kit_requirements_coverage.csv
120
+ - lib/udap_security_test_kit/requirements/generated/udap_security_client_requirements_coverage.csv
121
+ - lib/udap_security_test_kit/requirements/generated/udap_security_requirements_coverage.csv
122
+ - lib/udap_security_test_kit/requirements/hl7.fhir.us.udap-security_1.0.0_reqs.xlsx
123
+ - lib/udap_security_test_kit/requirements/udap_security_test_kit_requirements.csv
113
124
  - lib/udap_security_test_kit/scopes_supported_field_test.rb
114
125
  - lib/udap_security_test_kit/signed_metadata_contents_test.rb
115
126
  - lib/udap_security_test_kit/signed_metadata_field_test.rb
@@ -134,6 +145,76 @@ files:
134
145
  - lib/udap_security_test_kit/udap_x509_certificate.rb
135
146
  - lib/udap_security_test_kit/urls.rb
136
147
  - lib/udap_security_test_kit/version.rb
148
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/b2b_authorization_extension_object_test.rb
149
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/client_authorization_code_usage_test.rb
150
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/client_security_csrf_protection_test.rb
151
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/cryptographic_algorithms_test.rb
152
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/data_holder_auth_request_scope_test.rb
153
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/idp_authentication_compliance_test.rb
154
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/idp_supports_required_scopes_test.rb
155
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/jti_reuse_prevention_test.rb
156
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/metadata_interpretation_test.rb
157
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/oauth2_protocol_compliance_test.rb
158
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/preferred_identity_provider_test.rb
159
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/private_key_authentication_test.rb
160
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/resource_holder_authentication_test.rb
161
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/software_statement_registration_test.rb
162
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/token_request_authentication_test.rb
163
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/trust_community_query_parameters_test.rb
164
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client/validation_confidentiality_test.rb
165
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/client_attestation_group.rb
166
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group.rb
167
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group/authentication_request_construction_test.rb
168
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authentication_requests_group/authentication_request_validation_test.rb
169
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group.rb
170
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/access_token_lifetime_test.rb
171
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/access_token_request_validation_test.rb
172
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/authorization_code_usage_test.rb
173
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/authorization_code_token_requests_group/resource_holder_authorization_flow_test.rb
174
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group.rb
175
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group/client_certificate_storage_test.rb
176
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/client_authentication_group/no_client_credentials_native_apps_test.rb
177
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group.rb
178
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/certification_handling_test.rb
179
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/client_id_modification_test.rb
180
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/dynamic_client_registration_group/dynamic_client_registration_validation_test.rb
181
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group.rb
182
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/deny_token_request_test.rb
183
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/general_error_response_test.rb
184
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_id_token_test.rb
185
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_idp_test.rb
186
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/invalid_redirection_uri_test.rb
187
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/prompt_none_test.rb
188
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/state_mismatch_test.rb
189
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/unauthenticated_user_test.rb
190
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/error_handling_group/valid_state_error_response_test.rb
191
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group.rb
192
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/access_token_validation_test.rb
193
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/id_token_validation_test.rb
194
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/id_token_access_token_validation_group/token_response_validation_test.rb
195
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group.rb
196
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_authentication_request_test.rb
197
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_dynamic_registration_test.rb
198
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_metadata_validation_test.rb
199
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/identity_provider_interaction_group/idp_token_exchange_test.rb
200
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group.rb
201
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_certificate_chain_validation_test.rb
202
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_grant_parameter_validation_test.rb
203
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_jti_reuse_test.rb
204
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_signature_validation_test.rb
205
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/jwt_security_group/jwt_token_request_validation_test.rb
206
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group.rb
207
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_authorization_extensions_required_test.rb
208
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_community_parameter_support_test.rb
209
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_metadata_endpoint_error_handling_test.rb
210
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_metadata_representation_test.rb
211
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/metadata_server_capabilities_group/udap_profiles_supported_test.rb
212
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group.rb
213
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/csrf_protection_test.rb
214
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/obtain_authorization_scopes_test.rb
215
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/state_parameter_test.rb
216
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server/security_measures_group/unauthenticated_client_security_test.rb
217
+ - lib/udap_security_test_kit/visual_inspection_and_attestation/server_attestation_group.rb
137
218
  - lib/udap_security_test_kit/well_known_endpoint_test.rb
138
219
  homepage: https://github.com/inferno-framework/udap-security-test-kit
139
220
  licenses: