Authorization Server: Difference between revisions

From IDESG Wiki
Jump to navigation Jump to search
 
(36 intermediate revisions by the same user not shown)
Line 4: Line 4:
==Context==
==Context==
* The ultimate purpose of most user authentication is to allow the user, or the user's client, to access protected resources. The abstract concept of an [[Authorization Server]] is just the source of the tokens that are sent to the [[Resource Server]] to give it the authority it needs to provide access to the protected asset.
* The ultimate purpose of most user authentication is to allow the user, or the user's client, to access protected resources. The abstract concept of an [[Authorization Server]] is just the source of the tokens that are sent to the [[Resource Server]] to give it the authority it needs to provide access to the protected asset.
* For the purposes of Identity Management this wiki will focus on the use of the [[Authorization Server]].
* For the purposes of Identity Management this wiki will focus on the use of the [[Authorization Server]] as the source of a digital version of user consent that is understood by both the requesting party and the user. Note, however, that the [[Resource Server]] may actually participate in converting the requesting party token into a grant that matches the internal structure of user data held by the [[Resource Server]].
* The physical and logical location of the [[Authorization Server]] is deliberately left open to allow for a wide range of solutions, including self-issued identifiers.
===Actors===
* Resource owner or agent, for example a healthcare patient or a guardian. Often abbreviated as the user.
* Requesting party - some person or service that wants access to user data.
* Client - code that makes the request for user data, for example a physician requests patient data via an EHR. The fiction here is that this code acts as the user's client.
* [[Resource Server]] - the endpoint where the client asks for access to the user data, this could very well be a large infrastructure, or just a request to a user's smartphone.
* [[Authorization Server]] - the endpoint where the request for user data arrives and the access token is generated. It will also handle refresh requests so long as the user allows it.


==Problems==
==Problems==
* There are a wide range of attacks on the web to try to illegitimately acquire access to protected resources. Nearly of the complexity associated with an [[Authorization Server]] to to mitigate those threats.
* There are a wide range of attacks on the web to try to illegitimately acquire access to protected resources. Nearly all of the complexity associated with an [[Authorization Server]] protocol is to mitigate those threats while maintaining user control of their own data.


==Solutions==
==Solutions==


Specific virtual solutions:
Specific virtual solutions by industry group:
===Healthcare===
===Healthcare===
See the wiki page [[Patient Consent]] for details on getting permission to issue a token for health recous. The following flows follows the pattern from [https://docs.kantarainitiative.org/uma/wg/rec-oauth-uma-grant-2.0.html#rs-rpt-response User-Managed Access (UMA) 2.0 Grant for OAuth 2.0 Authorization] provides consent to the [[Authorization Server]] in order to capture [[Patient Consent]]. The the context of healthcare, a requesting party could be, for example, a physician in a large EHR making a request for patient data via that EHR. That interaction is viewed as internal and not subject to standardization in this presentation. The resulting token (here called RPT) is passed from one EHR (here called the client) to another EHR (here called the [[Resource Server]]). An alternate flow would allows the RPT to be passed to an Health Information Exchange (HIE), The entire HIE infrastructure would then be considered to be the [[Resource Server]]. From the [[Authorization Server]] perspective, it receives an RPT and produces an Access Token, which grants or denies access per the user intent.
# Client Requests Resource Without Providing an Access Token with a list of requested access indicating which requests are essential - the proposed solution is for the [[Resource Server]] to verify that the client is a HIPAA covered entity in the quickest possible manner. The client MUST know the patient's record location code at the resource server.
# Resource Server Responds to Client's Tokenless Access Attempt - with a list of its capability to respond to the to client's requests in a manner that the user can comprehend and that it can fulfill. Some means of accessing the [[Authorization Server]] must be included.
# Client generates a requesting party token (RPT) that gives the patient all of the information needed to make choice to consent, such as provider, purpose, etc.
# Client Requests Resource with the requesting party token (RPT) - this request is bound to the client by a JWS signed token
# Authorization Server Response to Client on Authorization Failure - and issues a token bound to the resource server and itself - this is NOT a bearer token.
# Authorization Server Refreshes the grants if requested using the same requesting party token (RPT)


==References==
==References==
* D. Hardt, ''The OAuth 2.0 Authorization Framework'' IEtF 6749 https://www.rfc-editor.org/rfc/pdfrfc/rfc6749.txt.pdf
* D. Hardt, ''The OAuth 2.0 Authorization Framework'' IETF 6749 https://www.rfc-editor.org/rfc/pdfrfc/rfc6749.txt.pdf


===Other Material===
 
[[Category:Authorization]]

Latest revision as of 17:55, 17 April 2020

Full Title

Access tokens are issued to third-party clients by an Authorization Server with the approval of the resource owner. The client uses the access token to access the protected resources hosted by the resource server. Taken from RFC 6749

Context

  • The ultimate purpose of most user authentication is to allow the user, or the user's client, to access protected resources. The abstract concept of an Authorization Server is just the source of the tokens that are sent to the Resource Server to give it the authority it needs to provide access to the protected asset.
  • For the purposes of Identity Management this wiki will focus on the use of the Authorization Server as the source of a digital version of user consent that is understood by both the requesting party and the user. Note, however, that the Resource Server may actually participate in converting the requesting party token into a grant that matches the internal structure of user data held by the Resource Server.
  • The physical and logical location of the Authorization Server is deliberately left open to allow for a wide range of solutions, including self-issued identifiers.

Actors

  • Resource owner or agent, for example a healthcare patient or a guardian. Often abbreviated as the user.
  • Requesting party - some person or service that wants access to user data.
  • Client - code that makes the request for user data, for example a physician requests patient data via an EHR. The fiction here is that this code acts as the user's client.
  • Resource Server - the endpoint where the client asks for access to the user data, this could very well be a large infrastructure, or just a request to a user's smartphone.
  • Authorization Server - the endpoint where the request for user data arrives and the access token is generated. It will also handle refresh requests so long as the user allows it.

Problems

  • There are a wide range of attacks on the web to try to illegitimately acquire access to protected resources. Nearly all of the complexity associated with an Authorization Server protocol is to mitigate those threats while maintaining user control of their own data.

Solutions

Specific virtual solutions by industry group:

Healthcare

See the wiki page Patient Consent for details on getting permission to issue a token for health recous. The following flows follows the pattern from User-Managed Access (UMA) 2.0 Grant for OAuth 2.0 Authorization provides consent to the Authorization Server in order to capture Patient Consent. The the context of healthcare, a requesting party could be, for example, a physician in a large EHR making a request for patient data via that EHR. That interaction is viewed as internal and not subject to standardization in this presentation. The resulting token (here called RPT) is passed from one EHR (here called the client) to another EHR (here called the Resource Server). An alternate flow would allows the RPT to be passed to an Health Information Exchange (HIE), The entire HIE infrastructure would then be considered to be the Resource Server. From the Authorization Server perspective, it receives an RPT and produces an Access Token, which grants or denies access per the user intent.

  1. Client Requests Resource Without Providing an Access Token with a list of requested access indicating which requests are essential - the proposed solution is for the Resource Server to verify that the client is a HIPAA covered entity in the quickest possible manner. The client MUST know the patient's record location code at the resource server.
  2. Resource Server Responds to Client's Tokenless Access Attempt - with a list of its capability to respond to the to client's requests in a manner that the user can comprehend and that it can fulfill. Some means of accessing the Authorization Server must be included.
  3. Client generates a requesting party token (RPT) that gives the patient all of the information needed to make choice to consent, such as provider, purpose, etc.
  4. Client Requests Resource with the requesting party token (RPT) - this request is bound to the client by a JWS signed token
  5. Authorization Server Response to Client on Authorization Failure - and issues a token bound to the resource server and itself - this is NOT a bearer token.
  6. Authorization Server Refreshes the grants if requested using the same requesting party token (RPT)

References