How can we improve SMART scopes?
Zooming in on FHIR authz
isaac vetter, epic
HL7®, FHIR® and the flame Design mark are the registered trademarks of Health Level Seven International and are used with permission.
Redmond, June 10 – 12 | @HL7 @FirelyTeam | #fhirdevdays | www.devdays.com/us
Exploring SMART on FHIR for Research and Quality Purposes
1
2
SMART App Launch protocol
Current
clinical-scope ::=
( 'patient' | 'user' | 'system' )
'/' ( fhir-resource | '*' )
'.' ( 'read' | 'write' | '*' )`
App requests scopes
Location: https://ehr/authorize?
response_type=code&client_id=app-client-id&
redirect_uri=https%3A%2F%2Fapp%2Fafter-auth& scope=Observation.read+patient%2FPatient.read+openid+fhirUser&
state=98wrghuwuogerg97&
aud=https://ehr/fhir
User approves scope
User approves scope
Machine-facing scopes should be different from consumer-facing scopes!
Current
FHIR Observation.category
FHIR Observation.category
patient/Observation.read
Wilcard scopes
When a wildcard is requested for the FHIR resource, the client is asking for all data for all available FHIR resources, both now and in the future.
Scopes should sometimes be finer-grained than FHIR resources.
Facebook authz example:
{dataType}.read
Consumer-facing scopes should be simple and relatable.
Facebook user explanations
Facebook scopes
31 hardcoded scopes with allowed usages
Simple enhancement
Complex enhancement (stolen from Josh)
Principles
Next steps?
Continue the conversation in #smart zulip stream.
?
26