Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Reference Implementation: HeaderPrincipalFactory

Fedora ships with this simple principal factory that creates string-based security principals from request headers. This is useful in cases, like the Apache HTTP Shibboleth module, where additional attributes are supplied as request headers.

OAuth Authentication of Third-Party Applications

...

From the OAuth 1.0 specification:

OAuth provides a method for clients to access server resources on
behalf of a resource owner (such as a different client or an end-
user).  It also provides a process for end-users to authorize third-
party access to their server resources without sharing their
credentials (typically, a username and password pair), using user-
agent redirections.

Applications can be authenticated by means of token credentials delivered generated through the OAuth protocol.

Possible Limitations

  • A token covers a certain scope of access, tied to the client app. Assuming that user privileges vary throughout a repository, can OAuth tokens be used to effectively record user privileges?
  • One token per application or per app user, is the OAuth model we see in the wild. Otherwise an app would have to know which token to use within some smaller context.

Implementation Questions

  • Who will be able authorize third-party applications at the server's Resource Owner Authorization endpoint? (/authorize)
    • fedora administrators
    • who else?
  • What scopes will govern token access?
    • on behalf of user X (or security principal X)
    • within repository path /A/B/C
    • between now and X months hence
  • Which scopes are optional and which are mandatory, for whom?
    • Do admins get to give away global permissions to apps?
    • Are tokens authorized by normal users restricted to their current permissions?
  • How much access can a single OAuth token cover? Can they be patched or modified after authorization to cover more cases?

A user with the fedoraAdmin role may authorize application access without any limits upon scope, including access equivalent to the fedoraAdmin role. A user with the fedoraUser role can only grant tokens within a scope that is limited by their own user credentials, since the application will only be able to act on their behalf. For specifics see the OAuth section below.

...