Chapter 19. Client Authentication

Table of Contents

19.1. The pg_hba.conf File
19.2. User Name Maps
19.3. Authentication Methods
19.3.1. Trust Authentication
19.3.2. Password Authentication
19.3.3. GSSAPI Authentication
19.3.4. SSPI Authentication
19.3.5. Ident Authentication
19.3.6. Peer Authentication
19.3.7. LDAP Authentication
19.3.8. RADIUS Authentication
19.3.9. Certificate Authentication
19.3.10. PAM Authentication
19.3.11. BSD Authentication
19.4. Authentication Problems

When a client application connects to the database server, it specifies which Postgres Pro Enterprise database user name it wants to connect as, much the same way one logs into a Unix computer as a particular user. Within the SQL environment the active database user name determines access privileges to database objects — see Chapter 20 for more information. Therefore, it is essential to restrict which database users can connect.

Note

As explained in Chapter 20, Postgres Pro Enterprise actually does privilege management in terms of roles. In this chapter, we consistently use database user to mean role with the LOGIN privilege.

Authentication is the process by which the database server establishes the identity of the client, and by extension determines whether the client application (or the user who runs the client application) is permitted to connect with the database user name that was requested.

Postgres Pro Enterprise offers a number of different client authentication methods. The method used to authenticate a particular client connection can be selected on the basis of (client) host address, database, and user.

Postgres Pro Enterprise database user names are logically separate from user names of the operating system in which the server runs. If all the users of a particular server also have accounts on the server's machine, it makes sense to assign database user names that match their operating system user names. However, a server that accepts remote connections might have many database users who have no local operating system account, and in such cases there need be no connection between database user names and OS user names.