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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/smart_app_launch/client_suite/authorization_request_verification_test.rb', line 60
def check_request_params(params, request_num)
if params['response_type'] != 'code'
add_message('error',
"Authorization request #{request_num} had an incorrect `response_type`: expected 'code', " \
"but got '#{params['response_type']}'")
end
if params['client_id'] != client_id
add_message('error',
"Authorization request #{request_num} had an incorrect `client_id`: expected #{client_id}, " \
"but got '#{params['client_id']}'")
end
if params['redirect_uri'].blank?
add_message('error',
"Authorization request #{request_num} is missing the `redirect_uri` element")
else
if smart_redirect_uris.blank?
add_message('error',
'No redirect URIs registered to check against the `redirect_uri` element ' \
"in authorization request #{request_num} is missing the `redirect_uri` element")
elsif !smart_redirect_uris.split(',').include?(params['redirect_uri'])
add_message('error',
"Authorization request #{request_num} had an unregistered `redirect_uri`: " \
"got #{params['redirect_uri']}, but expected one of '#{smart_redirect_uris}'")
end
end
if launch_key.present? && params['launch'].present? && params['launch'] != launch_key
add_message('error',
"Authorization request #{request_num} had an incorrect `launch`: expected #{launch_key}, " \
"but got '#{params['launch']}'")
end
if params['state'].blank?
add_message('error',
"Authorization request #{request_num} is missing the `state` element")
end
if params['aud'] != client_fhir_base_url
add_message('error',
"Authorization request #{request_num} had an incorrect `aud`: " \
"expected '#{client_fhir_base_url}', but got '#{params['aud']}'")
end
if params['code_challenge'].blank?
add_message('error',
"Authorization request #{request_num} is missing the `code_challenge` element")
end
if params['code_challenge_method'] != 'S256'
add_message('error',
"Authorization request #{request_num} had an incorrect `code_challenge_method`: " \
"expected 'S256', but got '#{params['code_challenge_method']}'")
end
if params['scope'].blank?
add_message('error', "Token request #{request_num} did not include the requested `scope`")
end
nil
end
|