# Enable Basic authentication

Enable Basic authentication for your Quarkus project and allow users to authenticate with a username and password.

## Prerequisites

- You have installed at least one extension that provides an `IdentityProvider` based on username and password. For example:

  - Quarkus Security Jakarta Persistence extensions (`quarkus-security-jpa` or `quarkus-security-jpa-reactive`)

  - Elytron security properties file extension `(quarkus-elytron-security-properties-file)`

  - Elytron security JDBC extension `(quarkus-elytron-security-jdbc)`

The following procedure outlines how you can enable Basic authentication for your application by using the `elytron-security-properties-file` extension.

## Procedure

1. In the `application.properties` file, set the `quarkus.http.auth.basic` property to `true`.

       quarkus.http.auth.basic=true

2. Optional: In a non-production environment only and purely for testing Quarkus Security in your applications:

   1. To enable authentication for the embedded realm, set the `quarkus.security.users.embedded.enabled` property to `true`.

          quarkus.security.users.embedded.enabled=true

   2. You can also configure the required user credentials, user name, secret, and roles. For example:

          quarkus.http.auth.basic=true
          quarkus.security.users.embedded.enabled=true
          quarkus.security.users.embedded.plain-text=true
          quarkus.security.users.embedded.users.alice=alice (1)
          quarkus.security.users.embedded.users.bob=bob (2)
          quarkus.security.users.embedded.roles.alice=admin (1)
          quarkus.security.users.embedded.roles.bob=user (2)

      1 | The user, `alice`, has `alice` as their password and `admin` as their role.
      2 | The user, `bob`, has `bob` as their password and `user` as their role. For information about other methods that you can use to configure the required user credentials, see the Configuring User Information section of the Quarkus "Security Testing" guide.
      | Configuring user names, secrets, and roles in the `application.properties` file is appropriate only for testing scenarios. For securing a production application, it is crucial to use a database to store this information.

## Next steps

For a more detailed walk-through that shows you how to configure Basic authentication together with Jakarta Persistence for storing user credentials in a database, see the Getting started with Security by using Basic authentication and Jakarta Persistence guide.

## References

- Quarkus Security overview

- Identity Providers

- Configuring User Information in application.properties

- Basic authentication