[Openid-specs-heart] Comment on Section 2.1.3 of Health Relationship Trust Profile for OAuth 2.0

Adrian Gropper agropper at healthurl.com
Thu Dec 3 23:12:56 UTC 2015


The public key I'm talking about is (*emphasis added*)
4.1.
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#rfc.section.4.1>
Discovery
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#Discovery>

The authorization server MUST provide an OpenID Connect service discovery
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#OpenID.Discovery>
[OpenID.Discovery] endpoint listing the components relevant to the OAuth
protocol:
issuerThe fully qualified issuer URL of the serverauthorization_endpointThe
fully qualified URL of the server's authorization endpoint defined by OAuth
2.0 <http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#RFC6749>
[RFC6749]token_endpointThe fully qualified URL of the server's token
endpoint defined by OAuth 2.0
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#RFC6749>
[RFC6749]introspection_endpointThe fully qualified URL of the server's
introspection endpoint defined by OAuth Token Introspection
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#RFC7662>
[RFC7662]revocation_endpointThe fully qualified URL of the server's
revocation endpoint defined by OAuth 2.0 Token Revocation
<http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#RFC7009>
[RFC7009]jwks_uriThe fully qualified URI of *the server's public key* in JWK
Set <http://openid.bitbucket.org/HEART/openid-heart-oauth2.html#RFC7517>
[RFC7517] formatI never mentioned encryption. I understand that all of the
encryption in HEART is done by the SSL certificates that every server (RS
and AS) has to have.

What I'm trying to make clear, is that each HEART protected resource,
regardless of who specifies the AS and what kind of client is seeking
access can have its own separate public key that is provided by the AS as
part of 4.1 above. Is this statement consistent with the three HEART
profiles as proposed?

The reason that I'm being a stickler on this point is a liability issue
from the resource server's perspective. I want to make sure that the RS can
claim a legal safe harbor for breach of a protected resource as long as it
can show that only that AS, as specified in 4.1 above, could have delegated
access to whatever client shows up asking for the resource. An unverified
and evil client, for example, should have access to only one patient
regardless of how evil it is. This puts the burden of client and RqP
verification completely on the shoulders of the AS that is doing the
resource registration dance 4.1. Hence the "safe harbor" when the RS can
prove that the RO specified the AS.

PS: This has nothing to do with the RHEx situation where the RS was
expected to take responsibility for registration of the client and
authentication of the RqP. The RS was on the hook for a lot more in RHEx.
The RS is also on the hook for a lot more when the RS specifies the AS, as
it can in OAuth.

Adrian

On Thu, Dec 3, 2015 at 4:48 PM, Justin Richer <jricher at mit.edu> wrote:

> Adrian,
>
> I’m still not sure where you’re getting public keys from. It sounds like
> you’re proposing a completely different technology stack which, as far as
> I’m aware, doesn’t exist.
>
>  — Justin
>
> On Dec 3, 2015, at 4:05 PM, Adrian Gropper <agropper at healthurl.com> wrote:
>
> Thanks Dale for raising this important issue. One of the problems is that
> the term "resource owner" is overloaded and that makes the discussion of
> OAuth vs. UMA unnecessarily complex. The point you are raising is directly
> related to the ONC API Task Force that was just created and guidance that
> might be issued by OCR on the patient right of access to the MU3 API.
>
> Resource owner is confusing in HEART because it could be:
> - the Resource Subject (the person, including a child or a disabled elder)
> that a FHIR resource pertains to
> - the Resource Delegate (the person that has access to technology and the
> (legal) right to manage a FHIR resource
> - the Resource Custodian, that has the right to delete the resource and is
> typically responsible for protecting access. This is typically a HIPAA
> covered entity such as the hospital, lab, or insurance co that exposes a
> FHIR resource pertaining to a single subject.
>
> Section 2 of the HEART OAuth 2.0 Profile
> http://openid.bitbucket.org/HEART/openid-heart-oauth2.html is confusing
> in this respect and it makes the transition to the HEART UMA Profile
> http://openid.bitbucket.org/HEART/openid-heart-uma.html particularly
> difficult.
>
> The majority of my comments around these drafts have to do with this
> overloading of the "resource owner" term. The HEART "delegation" use-case
> is partly designed to resolve this ambiguity. This is also why I suggest
> that for both security and interoperability UMA is easier to profile than
> OAuth.
>
> The HEART profiles do not need to deal with multi-subject bulk transfers,
> transfers from Alice to Alice, and resources that pertain to multiple
> subjects such as a patient list. These can be done in other ways or can be
> added to HEART later. In order to inform the MU3 API requirement, and to
> allow a broad interpretation of "patient right of access" with security
> safe harbors for the HIPAA CE, the HEART profiles must allow the
> Authorization Server to register clients and authenticate requesting
> parties without any blocking by the resource server. This is achievable
> when every resource can be protected by a separate public key link that is
> provided by the AS at resource registration time. I believe that the
> current profiles allow for this during dynamic registration of the AS, but
> I certainly think it could be clearer.
>
> Adrian
>
> On Thu, Dec 3, 2015 at 12:32 PM, Dale Moberg <dale.moberg at orionhealth.com>
> wrote:
>
>>
>> Hi, with advance apologies for the holiday-induced delay to our editor.
>>
>> Section 2.0 introduces three Client Profiles Types in sections 2.1.1 +
>> 2.1.2 and section 2.1.3. I agree with others in the group that the Client
>> Profile types do present “vanilla” profiles for three of the now five
>> specified OAuth2 token grant types (found in RFCs 6749 7521).
>> The Full Client and Browser Embedded clients with User delegation are
>> certain to be of value in healthcare (and for the OAuth2-protected security
>> services of UMA and OpenId Connect).
>>
>>
>> I do, however, have concerns about any inter-organizational uses of the
>> Direct Access Client type in healthcare that I wish to present next. I
>> would advocate deferring implementation of the Direct Access client type
>> until more is agreed upon the intended usage of this pattern. If the only
>> real usage is for “internal” bulk downloads, then organizations are free to
>> accomplish downloads in several ways, including a Direct Access client
>> pattern if they wish. Internal usage can proceed without standards that
>> support interoperability; private or proprietary solutions could suffice.
>> But, if the pattern is implemented for inter-organizational  data sharing,
>> the Direct Access client type has several  deficiencies.
>>
>>
>> OAuth2 Full Client types allow a “resource owner” to delegate access to a
>> Client application. While our group often is thinking about important
>> healthcare use cases where resource owners and resource sets map,
>> respectively, to patients and their medical records, nothing requires
>> restricting the pattern in this way. For example, a physician might be a
>> resource owner (and be entitled to both read and delegate access) to all of
>> his patient records to others involved in patient care, by referrals or
>> other processes. What counts semantically in “owner” is that an end user
>> has a userid and password that, in combination with a registered client and
>> its secret is granted access to a set of resources.
>>
>>
>> So it could be that for a given resource set, there are multiple owners
>> (accessors) able to present credentials and ids and delegate access to a
>> resource set to registered clients presenting their credentials. Or there
>> could be one owner. Bank accounts, facebook pages, google docs – all
>> exhibit their own distinctive requirements for privacy and sharing, and it
>> is at a policy level that these requirements get mulled over and policies
>> get thrashed out.
>>
>>
>> As a mechanism of requesting and granting or refusing access, the Direct
>> Client type does not mesh well with interorganizational access requests
>> because of some specifics about the healthcare domain.
>>
>>
>> First, direct access clients are not to be dynamically registered
>> (according to our profile) -- which is very sensible.
>>
>>
>> So registration must be for a client that “on its own” is trusted with
>> resources.  Now suppose that the resource pool (the set of all resource
>> sets) exposes an API that is to support Direct Access Clients. And suppose
>> that the Client is not in the security domain of the resource or
>> authorization servers. Clearly there needs to be considerable trust
>> extended to allow registration of such a client. Because once registered,
>> the access authorization check—no matter what resource is requested-- can
>> only be based on the client_id and the accompanying client_secret. On this
>> basis, a JWT (access token) is issued – containing no more specific or
>> granular information about the requester  than its organizational
>> identity;  the resource server can check the JWT, is signature and make a
>> call to an introspection service. But the authorization service, once
>> trusted, has said access is permitted, no matter what the resource happened
>> to be, provided the client id and secret are OK.
>>
>>
>> Now conceivably there are organizations with data to be shared that could
>> leverage organizational identity as a basis for data sharing. A producer of
>> goods might request access to a data base to see all goods purchased by a
>> retailer, and based on which organization is requesting, disallow a
>> producer from seeing how much the retailer had purchased from a competing
>> producer, but still see its own products that had been purchased.But
>> healthcare data sharing is governed by privacy regulations that reflect
>> such challenges as “who’s asking?” “what is their role?" and “what’s
>> your need to know with respect to healthcare provision?” Depending on the
>> answers to these questions, tied to the identity and role(s) of the
>> requesters and their healthcare relevant relationships to the
>> patients/customers, access is granted. The problem with the Direct Access
>> client is that the information needed to check the policy is not provided
>> in the request. A significant side effect would be that no audit trail
>> could be produced to document who got the information and in what capacity
>> and circumstances the information is to be used.
>>
>>
>> The problem is that the requesting organization has the relevant
>> information about the user(s), role(s) and relationships to the patients
>> but it is not information available in the registration, in the access
>> request, or as an intrinsic part of the client-credentials-only flow used
>> in the Direct Access Client type.  The inter-organizational trust/access
>> problem can be succinctly described by noting that we expect the
>> authorization/resource organization to be able to consult the same
>> information about the Direct Access client access request approval
>> identities, roles, and relationships as is used for an internal system
>> request. And the Direct Client pattern lacks specification of ways that the
>> information, or an explanation of how to obtain the information, that is
>> needed for checking that typical healthcare policies apply.
>>
>> If implementers think that the Direct Access Client support would be
>> important to offer “inside the four walls” -- to use one of our expert’s
>> vivid phrase — then I suppose the profile could be released with that
>> understanding of its intended application range. I would urge the
>> committee to consider very carefully whether they are sufficiently
>> comfortable with the
>> inter-organizational/inter-regional/inter-security-domain security issues
>> to recommend implementation for that context of use.
>>
>> Dale Moberg
>>
>> _______________________________________________
>> Openid-specs-heart mailing list
>> Openid-specs-heart at lists.openid.net
>> http://lists.openid.net/mailman/listinfo/openid-specs-heart
>>
>>
>
>
> --
>
> Adrian Gropper MD
>
> PROTECT YOUR FUTURE - RESTORE Health Privacy!
> HELP us fight for the right to control personal health data.
> DONATE: http://patientprivacyrights.org/donate-2/
> _______________________________________________
> Openid-specs-heart mailing list
> Openid-specs-heart at lists.openid.net
> http://lists.openid.net/mailman/listinfo/openid-specs-heart
>
>
>


-- 

Adrian Gropper MD

PROTECT YOUR FUTURE - RESTORE Health Privacy!
HELP us fight for the right to control personal health data.
DONATE: http://patientprivacyrights.org/donate-2/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-heart/attachments/20151203/42045a06/attachment.html>


More information about the Openid-specs-heart mailing list