Richard Downer created BROOKLYN-577:
---------------------------------------
Summary: Modernise Brooklyn's authentication system
Key: BROOKLYN-577
URL: https://issues.apache.org/jira/browse/BROOKLYN-577
Project: Brooklyn
Issue Type: Improvement
Affects Versions: 1.0.0
Reporter: Richard Downer
Apache Brooklyn is a tool for running stuff in "the cloud", such as Amazon EC2.
In more detail, it's a tool for describing applications and their components,
deploying these applications to the cloud, and managing the ongoing health and
responsiveness. Brooklyn does this using blueprints - human readable documents
which describe in detail an application component, or a whole application.
Blueprints are stored in a catalog, essentially a built-in database of
components and applications. An application blueprint can call on component
blueprints from the catalog, therefore allowing complex applications to be
built from simple pieces.
Apache Brooklyn currently uses a simple authentication/authorisation system.
Runtime authentication relies on HTTP Basic Authentication. While this has been
satisfactory for some time, it has many shortcomings. HTTP Basic Authentication
caches credentials on the client side, which is a weakness. It's not possible
for a server policy to enforce session expiry timeouts. Even trivial things
such as providing a "logout" button are difficult to reliably implement. This
makes enterprise adoption of Brooklyn problematic as it cannot comply with the
security policy requirements that enterprises typically have.
Apache Brooklyn's authorisation systems on the server side are basic. Usernames
and passwords can be put into the server configuration by an administrator.
This means that users do not have the ability to change their own password, and
enterprise security policies such as password rotation cannot be supported. (As
an alternative, Brooklyn can integrate with external directory services, but it
is often overkill to deploy a heavy directory server alongside a Brooklyn
server.)
This project would be to overhaul Apache Brooklyn's login system to a modern
system. Considerations include:
* A built-in user directory that is easy to get started with yet which guides
the administrator towards a secure system
* Credentials stored in a secure manner
* A login screen in the UI, and the appropriate API methods to log in and
issue tokens
* Revise the server side API code to validate tokens
* UI and API support for logging out, changing password, other appropriate
operations
* UI and API support for an administrator to manage users
* Security policy features such as:
** Logged in sessions expire after a fixed time
** User must change their password on first login
** User passwords expire after a fixed time and must be changed
** Lock out accounts after a number of failed logins
** Audit log
* Retain ability to integrate with an external directory service
This project will involve the use of Java for the server-side development (this
is where most of the work will take place), and HTML+CSS+Javascript for the
client-side development (this is less important as we expect others will be
on-hand to help with the visual development). It will require study and
implementation of "best practices" for security.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)