I'm recently studying OAuth2.0 RFC, and I am confused with its meaning of authentication.
From The OAuth 2.0 Authorization Framework, the terms refer to RFC 4949:
Certain security-related terms are to be understood in the sense
defined in [RFC4949]. These terms include, but are not limited to,
"attack", "authentication", "authorization", "certificate",
"confidentiality", "credential", "encryption", "identity", "sign",
"signature", "trust", "validate", and "verify".
From Section 1.2 Protocol Flow, it describes that client will authenticate by presenting an access token:
(E) The client requests the protected resource from the resource
server and authenticates by presenting the access token.
(F) The resource server validates the access token, and if valid,
serves the request.
From RFC 4949, it states that
$ authenticate
(I) Verify (i.e., establish the truth of) an attribute value
claimed by or for a system entity or system resource. (See:
authentication, validate vs. verify, "relationship between data
integrity service and authentication services" under "data
integrity service".)
$ authentication
(I) The process of verifying a claim that a system entity or
system resource has a certain attribute value. (See: attribute,
authenticate, authentication exchange, authentication information,
credential, data origin authentication, peer entity
authentication, "relationship between data integrity service and
authentication services" under "data integrity service", simple
authentication, strong authentication, verification, X.509.)
...
An authentication process consists of two basic steps:
- Identification step: Presenting the claimed attribute value
(e.g., a user identifier) to the authentication subsystem.
- Verification step: Presenting or generating authentication
information (e.g., a value signed with a private key) that acts
as evidence to prove the binding between the attribute and that
for which it is claimed. (See: verification.)
How OAuth access token authentication complies with the meaning from RFC4949? To my understanding, presentation of the access token should be regarded as Verification step, then which part of it would be regarded as the Identification step?
I would also like to verify if my understanding is correct, given two examples,
I have an api that retrieves user information
/users/:id, given the access token is also presented. In this case - (a) the query param:idis the claim and access token is the proof that client is authorized to retrieve the corresponding information.I have an api that retrieves user information
/users, and server will check who is the resource owner of access token and return corresponding information. In this case, does only validation against the access token happen because there is no claim from the client request? Or the access token itself has implicitly made a claim?