Using fine-grained authorization with a SMART on FHIR enabled HealthLake data store
Scopes alone do not provide you with the
necessary specificity about what data a requester is authorized to access in a data store.
Using fine-grained authorization enables a higher level of specificity when granting access
to a SMART on FHIR enabled HealthLake data store. To use fine-grained authorization, set
FineGrainedAuthorizationEnabled
equal to True
in the
IdentityProviderConfiguration
parameter of your CreateFHIRDatastore
request.
If you enabled fine-grained authorization, your authorization server returns a
fhirUser
scope in the id_token
along with the access token.
This permits information about the User to be retrieved by client application. The client
application should treat the fhirUser
claim as the URI of a FHIR resource
representing the current user. This can be Patient
, Practitioner
,
or RelatedPerson
. The authorization server's response also includes a
user/
scope that defines what data the user can access. This uses the
syntax defined for scopes related to FHIR resource specific scopes:
user/(fhir-resource | '*').('read' | 'write' | '*')
The following are examples of how fine-grained authorization can be used to further specify data access related FHIR resource types.
-
When
fhirUser
is aPractitioner
, fine-grained authorization determines the collection of patients that the user can access. Access tofhirUser
is allowed for only those patients where the Patient has reference to thefhirUser
as a General Practitioner.Patient.generalPractitioner : [{Reference(Practitioner)}]
-
When
fhirUser
is aPatient
orRelatedPerson
and the patient referenced in the request is different from thefhirUser
, fine-grained authorization determines access tofhirUser
for the requested patient. Access is allowed when there is a relationship specified in requestedPatient
resource.Patient.link.other : {Reference(Patient|RelatedPerson)}