<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OpenText Analytics Database 26.2.x – Client authentication</title>
    <link>/en/security-and-authentication/client-authentication/</link>
    <description>Recent content in Client authentication on OpenText Analytics Database 26.2.x</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/security-and-authentication/client-authentication/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Security-and-Authentication: Default authentication records</title>
      <link>/en/security-and-authentication/client-authentication/default-authentication-records/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/default-authentication-records/</guid>
      <description>
        
        
        &lt;p&gt;OpenText™ Analytics Database automatically creates the following default authentication records and grants them to the &lt;code&gt;public&lt;/code&gt; role. These have the lowest possible priority (&lt;code&gt;-1&lt;/code&gt;), so &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;user-created authentication records&lt;/a&gt; take priority over these default records:&lt;/p&gt;
&lt;p&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name,is_auth_enabled,auth_host_type,auth_method,auth_priority,is_fallthrough_enabled FROM client_auth;
         auth_name         | is_auth_enabled | auth_host_type | auth_method | auth_priority | is_fallthrough_enabled
---------------------------+-----------------+----------------+-------------+---------------+------------------------
 default_hash_network_ipv4 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_network_ipv6 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_local        | True            | LOCAL          | PASSWORD    |            -1 | False
(3 rows)
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

Do not use the &lt;code&gt;password&lt;/code&gt; method for your custom authentication records. If you want to use password-based authentication for your custom authentication records, use &lt;code&gt;hash&lt;/code&gt; instead.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;If no authentication records are defined (and the default authentication records are dropped), only the dbadmin and users without passwords can access the database. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/implicit-authentication/#&#34;&gt;Implicit authentication&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Configuring client authentication</title>
      <link>/en/security-and-authentication/client-authentication/configuring-client-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/configuring-client-authentication/</guid>
      <description>
        
        
        &lt;p&gt;You can restrict how database users can connect with authentication records. The OpenText™ Analytics Database uses client authentication to establish the identity of the connecting client and determines whether that client is authorized to connect to the database using the supplied credentials and from their host address.&lt;/p&gt;
&lt;h2 id=&#34;basic-authentication-configuration-workflow&#34;&gt;Basic authentication configuration workflow&lt;/h2&gt;
&lt;p&gt;In general, the workflow for configuring client authentication is as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;Create&lt;/a&gt; an authentication record. Authentication records are enabled automatically after creation. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/creating-authentication-records/#&#34;&gt;Creating authentication records&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;Grant&lt;/a&gt; the authentication to a user or role.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To view existing authentication records, query the system table &lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;IPv4&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ipv4-and-ipv6-for-client-authentication&#34;&gt;IPv4 and IPv6 for client authentication&lt;/h2&gt;
&lt;p&gt;The database supports clients using either the IPv4 or the IPv6 protocol to connect to the database server. Internal communication between database servers must consistently use one address family (IPv4 or IPv6). The client, however, can connect to the database from either type of IP address.&lt;/p&gt;
&lt;p&gt;If the client will be connecting from either IPv4 or IPv6, you must create two authentication methods, one for each address. Any authentication method that uses HOST authentication requires an IP address.&lt;/p&gt;
&lt;p&gt;For example, the first statement allows users to connect from any IPv4 address. The second statement allows users to connect from any IPv6 address:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION &amp;lt;&lt;span class=&#34;code-variable&#34;&gt;name&lt;/span&gt;&amp;gt; METHOD &amp;#39;gss&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39;; --IPv4
=&amp;gt; CREATE AUTHENTICATION &amp;lt;&lt;span class=&#34;code-variable&#34;&gt;name&lt;/span&gt;&amp;gt; METHOD &amp;#39;gss&amp;#39; HOST &amp;#39;::/0&amp;#39;; --IPv6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you are using a literal IPv6 address in a URL, you must enclose the IPv6 address in square brackets as shown in the following examples:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION Ldap SET host=&amp;#39;ldap://[1dfa:2bfa:3:45:5:6:7:877]&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap SET host=&amp;#39;ldap://[fdfb:dbfa:0:65::177]&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap SET host=&amp;#39;ldap://[fdfb::177]&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap SET host=&amp;#39;ldap://[::1]&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap SET host=&amp;#39;ldap://[1dfa:2bfa:3:45:5:6:7:877]:5678&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you are working with a multi-node cluster, any IP/netmask settings in (HOST, HOST TLS, HOST NO TLS) must match all nodes in the cluster. This setup allows the database owner to authenticate with and administer every node in the cluster. For example, specifying 10.10.0.8/30 allows a CIDR address range of 10.10.0.8-10.10.0.11.&lt;/p&gt;
&lt;p&gt;For detailed information about IPv6 addresses, see &lt;a href=&#34;http://tools.ietf.org/html/rfc1924&#34;&gt;RFC 1924&lt;/a&gt; and &lt;a href=&#34;https://www.ietf.org/rfc/rfc2732.txt&#34;&gt;RFC 2732&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Supported&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;supported-client-authentication-methods&#34;&gt;Supported client authentication methods&lt;/h2&gt;
&lt;p&gt;The database supports the following client authentication methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;trust&lt;/code&gt;: Users can authenticate with a valid username (that is, without a password).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reject&lt;/code&gt;: Rejects the connection attempt.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hash&lt;/code&gt;: Users must provide a valid username and password. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/hash-authentication/#&#34;&gt;Hash authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;gss&lt;/code&gt;: Authorizes clients that connect to the database with an MIT Kerberos implementation. The Key Distribution Center (KDC) must support Kerberos 5 using the GSS-API. Non-MIT Kerberos implementations must use the GSS-API. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/#&#34;&gt;Kerberos authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ident&lt;/code&gt;: Authenticates the client against a username on an Ident server. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ident-authentication/#&#34;&gt;Ident authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ldap&lt;/code&gt;: Authenticates a client and their username and password with an LDAP or Active Directory server. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ldap-authentication/#&#34;&gt;LDAP authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tls&lt;/code&gt;: Authenticates clients that provide a certificate with a Common Name (CN) that specifies a valid database username. The database must be configured for &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/configuring-client-server-tls/&#34;&gt;mutual mode TLS&lt;/a&gt; to use this method. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/tls-authentication/#&#34;&gt;TLS authentication&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;oauth&lt;/code&gt;: Authenticates a client with an access token. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/oauth-2-0-authentication/#&#34;&gt;OAuth 2.0 authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;local-and-host-authentication&#34;&gt;Local and host authentication&lt;/h2&gt;
&lt;p&gt;You can define a client authentication method as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Local: Local connection to the database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Host: Remote connection to the database from different hosts, each with their own IPv4 or IPv6 address and host parameters. For more information see &lt;a href=&#34;#IPv4&#34;&gt;IPv4 and IPv6 for Client Authentication&lt;/a&gt; above.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some authentication methods can only be designated as local or host, as listed in this table:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Authentication Method&lt;/th&gt; 

&lt;th &gt;
Local?&lt;/th&gt; 

&lt;th &gt;
Host?&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;gss&lt;/code&gt; (Kerberos)&lt;/td&gt; 

&lt;td &gt;
No&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ident&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
No&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ldap&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;hash&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;reject&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;trust&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;tls&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
No&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;oauth&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt; 

&lt;td &gt;
Yes&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;
&lt;h2 id=&#34;authentication-for-chained-users-and-roles&#34;&gt;Authentication for chained users and roles&lt;/h2&gt;
&lt;p&gt;The database supports creating chained users and roles, where you can grant ROLE2 privileges to ROLE1. All users in ROLE1 use the same authentication assigned to ROLE2. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE USER user1;
=&amp;gt; CREATE ROLE role1;
=&amp;gt; CREATE ROLE role2;
=&amp;gt; CREATE AUTHENTICATION h1 METHOD &amp;#39;hash&amp;#39; LOCAL;
=&amp;gt; GRANT AUTHENTICATION h1 to role2;
=&amp;gt; GRANT role2 to role1;
=&amp;gt; GRANT role1 to user1;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The user and role chain in the example above can be illustrated as follows:&lt;/p&gt;
&lt;p&gt;auth1 -&amp;gt; role2 -&amp;gt; role1 -&amp;gt; user1&lt;/p&gt;
&lt;p&gt;In this example, since role2 privileges are granted to role1 you only need to grant authentication to role2 to also enable it for role1.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Fallthrough authentication</title>
      <link>/en/security-and-authentication/client-authentication/fallthrough-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/fallthrough-authentication/</guid>
      <description>
        
        
        &lt;p&gt;Normally, if a user fails to authenticate with the first chosen authentication record, the user is rejected. However, certain authentication methods can be specified to instead, upon failure, &amp;quot;fall through&amp;quot; to an authentication record with a &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;lower priority&lt;/a&gt;. This can be useful, for example, for &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ldap-authentication/authentication-fallthrough-ldap/&#34;&gt;using multiple LDAP search attributes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Authentication fallthrough is disabled by default for new records.&lt;/p&gt;
&lt;p&gt;Another way to bypass method priority or implement fallthrough authentication is to implement it on the client instead. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-filtering/#&#34;&gt;Authentication filtering&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;authentication-method-compatibility&#34;&gt;Authentication method compatibility&lt;/h2&gt;
&lt;p&gt;The following table shows each authentication method&#39;s compatibility with fallthrough authentication. A value of &amp;quot;yes&amp;quot; indicates that the method in the column can fall through and validate the row method it falls through to. A value of &amp;quot;no&amp;quot; indicates that you cannot fall through to it and authentication ends.&lt;/p&gt;
&lt;p&gt;A value of &amp;quot;-&amp;quot; (dash) indicates that while fallthrough works, it has no meaningful effect. For example, a &lt;code&gt;hash&lt;/code&gt; authentication record can fall through to another &lt;code&gt;hash&lt;/code&gt; authentication record, but authentication will always fail because you cannot fall through to a correct password:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Column falls through to row&lt;/th&gt; 

&lt;th &gt;
ldap&lt;/th&gt; 

&lt;th &gt;
hash&lt;/th&gt; 

&lt;th &gt;
tls&lt;/th&gt; 

&lt;th &gt;
ident&lt;/th&gt; 

&lt;th &gt;
oauth&lt;/th&gt; 

&lt;th &gt;
gss&lt;/th&gt; 

&lt;th &gt;
trust&lt;/th&gt; 

&lt;th &gt;
reject&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
ldap&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
hash&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
-&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
tls&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
-&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
ident&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
oauth&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
gss&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
trust&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
reject&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
yes&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt; 

&lt;td &gt;
no&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;For example, suppose the user &lt;code&gt;Bob&lt;/code&gt; was granted the following authentication record with fallthrough enabled:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_tls_auth METHOD &amp;#39;tls&amp;#39; HOST TLS &amp;#39;0.0.0.0/0&amp;#39; FALLTHROUGH;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In addition, &lt;code&gt;Bob&lt;/code&gt; has the &lt;code&gt;public&lt;/code&gt; role, and therefore has the &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/&#34;&gt;default authentication records&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name,is_auth_enabled,auth_host_type,auth_method,auth_priority,is_fallthrough_enabled FROM client_auth;
         auth_name         | is_auth_enabled | auth_host_type | auth_method | auth_priority | is_fallthrough_enabled
---------------------------+-----------------+----------------+-------------+---------------+------------------------
 default_hash_network_ipv4 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_network_ipv6 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_local        | True            | LOCAL          | PASSWORD    |            -1 | False
(3 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If &lt;code&gt;Bob&lt;/code&gt;, connecting from a remote address, fails to authenticate with &lt;code&gt;v_tls_auth&lt;/code&gt;, Vertica attempts to authenticate him with the next (&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;in order of priority&lt;/a&gt;) authentication record, &lt;code&gt;default_hash_network_ipv4&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;logging-authentication-failures&#34;&gt;Logging authentication failures&lt;/h2&gt;
&lt;p&gt;Login failures are only &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/login-failures/&#34;&gt;logged&lt;/a&gt; if the user is rejected after all granted authentication records have failed. Only the final failure is logged.&lt;/p&gt;
&lt;p&gt;For example, suppose a user is granted both &lt;code&gt;tls&lt;/code&gt; and &lt;code&gt;password&lt;/code&gt; authentication records, and the &lt;code&gt;tls&lt;/code&gt; record falls through to the &lt;code&gt;password&lt;/code&gt; record.&lt;/p&gt;
&lt;p&gt;If the user fails to authenticate with both the &lt;code&gt;tls&lt;/code&gt; record and the &lt;code&gt;password&lt;/code&gt; record, then only the &lt;code&gt;password&lt;/code&gt; failure is logged in &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/login-failures/#&#34;&gt;LOGIN_FAILURES&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, if the user fails to authenticate with the &lt;code&gt;tls&lt;/code&gt; record, but succeeds with the &lt;code&gt;password&lt;/code&gt; record, then no failure is logged in &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/login-failures/#&#34;&gt;LOGIN_FAILURES&lt;/a&gt; because the user was not rejected at the end of the record chain.&lt;/p&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;p&gt;To enable fallthrough on a new authentication record, use &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/#&#34;&gt;CREATE AUTHENTICATION&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_tls_auth METHOD &amp;#39;tls&amp;#39; HOST TLS &amp;#39;0.0.0.0/0&amp;#39; FALLTHROUGH;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To toggle fallthrough on an existing authentication record, use &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/#&#34;&gt;ALTER AUTHENTICATION&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION v_tls_auth NO FALLTHROUGH; -- disable
=&amp;gt; ALTER AUTHENTICATION v_tls_auth FALLTHROUGH; -- enable
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Authentication filtering</title>
      <link>/en/security-and-authentication/client-authentication/authentication-filtering/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/authentication-filtering/</guid>
      <description>
        
        
        &lt;p&gt;You can filter for and authenticate with &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;authentication records&lt;/a&gt; that use a particular method by specifying the credentials for that method. This process skips any &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;higher-priority&lt;/a&gt;, non-&lt;code&gt;trust&lt;/code&gt; authentication records.&lt;/p&gt;
&lt;p&gt;If the selected record fails and &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/&#34;&gt;fallthrough&lt;/a&gt; is enabled, Vertica uses to the record with the &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;next highest priority&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you provide the credentials for an authentication method for which you have not been &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;granted&lt;/a&gt;, Vertica instead attempts to authenticate you with the highest priority authentication record.&lt;/p&gt;
&lt;p&gt;The following table shows the credentials the client provides and the requested authentication method in descending filter priority. If you attempt to provide more than one type of credential, your client selects and sends the one with the higher priority:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Credentials sent by client&lt;/th&gt; 

&lt;th &gt;
Requested authentication method&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
OAuthRefreshToken or OAuthAccessToken&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;oauth&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Non-default KerberosServiceName or KerberosHostname&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;gss&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Username, Password&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ldap&lt;/code&gt;, &lt;code&gt;hash&lt;/code&gt;, &lt;code&gt;ident&lt;/code&gt;, &lt;code&gt;trust&lt;/code&gt;, &lt;code&gt;tls&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;For example, if a client provides a username and password for user Alice, and the Alice has &lt;code&gt;oauth&lt;/code&gt;, &lt;code&gt;ldap&lt;/code&gt;, and &lt;code&gt;hash&lt;/code&gt; records, then Vertica attempts to authenticate the client with &lt;code&gt;ldap&lt;/code&gt; or &lt;code&gt;hash&lt;/code&gt;, whichever has the &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;higher priority&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Similarly, if Alice instead provides an OAuthAccessToken, username, and password, then Vertica attempts to authenticate her with the &lt;code&gt;oauth&lt;/code&gt; record because it has a higher filter priority.&lt;/p&gt;
&lt;p&gt;However, if Alice provides a KerberosHostname, Vertica attempts to authenticate her with the highest priority authentication record between her &lt;code&gt;oauth&lt;/code&gt;, &lt;code&gt;ldap&lt;/code&gt;, and &lt;code&gt;hash&lt;/code&gt; records.&lt;/p&gt;
&lt;h2 id=&#34;client-side-fallthrough-authentication&#34;&gt;Client-side fallthrough authentication&lt;/h2&gt;
&lt;p&gt;A workaround for the incompatibility of certain authentication methods with &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/&#34;&gt;fallthrough authentication&lt;/a&gt; is to use authentication filtering to manually fall through to the proper authentication record by detecting the initial authentication failure, and then making a new connection attempt with a different set of credentials.&lt;/p&gt;
&lt;p&gt;For example, &lt;code&gt;oauth&lt;/code&gt; and &lt;code&gt;hash&lt;/code&gt; cannot fall through to each other, so if a user is &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;granted&lt;/a&gt; authentication records with these methods, they can only authenticate with the higher priority record. As a workaround, you can detect the authentication failure with &lt;code&gt;oauth&lt;/code&gt; and then filter for &lt;code&gt;hash&lt;/code&gt; in another connection attempt. Doing this programmatically depends on the client. In JDBC, you can catch &lt;code&gt;SQLInvalidAuthorizationSpecException&lt;/code&gt; and then try to reconnect in the exception handler. In ODBC, you can check the return value of &lt;code&gt;SQLDriverConnect()&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// error checking omitted for brevity
    SQLHENV hdlEnv;
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &amp;amp;hdlEnv);
    SQLHDBC hdlDbc;
    SQLSetEnvAttr(hdlEnv, SQL_ATTR_ODBC_VERSION,
                (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER);
    SQLAllocHandle(SQL_HANDLE_DBC, hdlEnv, &amp;amp;hdlDbc);
    SQLRETURN ret = SQLDriverConnect(hdlDbc, NULL, (SQLCHAR *)(&amp;#34;DSN=VerticaDSN;OAuthAccessToken=&amp;#34; + accessToken + &amp;#34;;OAuthRefreshToken=&amp;#34; + refreshToken + &amp;#34;;OAuthClientSecret=&amp;#34; + clientSecret).c_str(), SQL_NTS, NULL, 0, NULL, false);

    if (!SQL_SUCCEEDED(ret))
    {
        std::cout &amp;lt;&amp;lt; &amp;#34;Could not connect to database with OAuth, retrying with hash authentication&amp;#34; &amp;lt;&amp;lt; std::endl;
        reportError &amp;lt;SQLHDBC&amp;gt;(SQL_HANDLE_DBC, hdlDbc);
        SQLAllocHandle(SQL_HANDLE_DBC, hdlEnv, &amp;amp;hdlDbc);
        const char* dsnName = &amp;#34;ExampleDB&amp;#34;;
        const char* userID = &amp;#34;Alice&amp;#34;;
        const char* passwd = &amp;#34;mypassword&amp;#34;;
        SQLConnect(hdlDbc, (SQLCHAR*)dsnName,SQL_NTS,(SQLCHAR*)userID,SQL_NTS,(SQLCHAR*)passwd, SQL_NTS);
    }
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;p&gt;In the following example, the user Bob is &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;granted&lt;/a&gt; two authentication records: one that uses Kerberos authentication (&lt;code&gt;gss&lt;/code&gt;) and another that uses password authentication (&lt;code&gt;hash&lt;/code&gt;):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name, auth_host_type, auth_method FROM client_auth;
       auth_name     | auth_host_type | auth_method
---------------------+----------------+-------------
 v_hash              | HOST           | HASH
 v_kerberos          | HOST           | GSS
(2 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Bob attempts to authenticate with Kerberos, but fails (the exact error message varies):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ vsql -h vertica_db.example.com -K vcluster.example.com -U Bob
vsql: GSSAPI continuation error: Unspecified GSS failure.  Minor code may provide more information
GSSAPI continuation error: No Kerberos credentials available (default cache: KEYRING:persistent:0)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bob notices the failure. The steps involved in detecting this programmatically depend on your client.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;An authentication record that uses &lt;code&gt;gss&lt;/code&gt; cannot fall through to one that uses &lt;code&gt;hash&lt;/code&gt;, so the only way for Bob to authenticate to the database is to filter for the &lt;code&gt;hash&lt;/code&gt; by providing the username and password:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; vsql -h vertica_db.example.com -U Bob -w &amp;#39;mypassword&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To implement client-side fallthrough authentication, check the initial connection/authentication attempt for errors and then create a new connection in the error handler. For example, the user Alice is granted &lt;code&gt;oauth&lt;/code&gt; and &lt;code&gt;hash&lt;/code&gt; authentication records:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name, auth_host_type, auth_method FROM client_auth;
       auth_name     | auth_host_type | auth_method
---------------------+----------------+-------------
 v_oauth             | HOST           | OAUTH
 v_hash              | HOST           | HASH
(2 rows)
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Implicit authentication</title>
      <link>/en/security-and-authentication/client-authentication/implicit-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/implicit-authentication/</guid>
      <description>
        
        
        &lt;p&gt;OpenText™ Analytics Database has implicit (that is, not reflected in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt; system table) authentication records reserved for the dbadmin and users without passwords. These records cannot be &lt;a href=&#34;../../../en/sql-reference/statements/drop-statements/drop-authentication/&#34;&gt;dropped&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For the dbadmin user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;trust&lt;/code&gt; method is used if all of the following are true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The dbadmin does not have a password.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The connection is local (that is, from a database node).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;hash&lt;/code&gt; method is used if all of the following are true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The dbadmin has a password.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The connection is local (that is, from a database node).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a non-dbadmin user, the &lt;code&gt;trust&lt;/code&gt; method is used if all of the following are true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The user does not have a password.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No custom (that is, non-default) authentication methods are enabled.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Dbadmin authentication access</title>
      <link>/en/security-and-authentication/client-authentication/dbadmin-authentication-access/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/dbadmin-authentication-access/</guid>
      <description>
        
        
        &lt;p&gt;The dbadmin user must have access to the database at all times. OpenText™ Analytics Database automatically ensures that a client can authenticate as the dbadmin from a LOCAL connection.&lt;/p&gt;
&lt;p&gt;If you need to authenticate as the dbadmin from a remote connection, the dbadmin must have a password. You can use the following methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use fallthrough authentication.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a custom, dbadmin-specific authentication method.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;authenticating-from-a-local-connection&#34;&gt;Authenticating from a local connection&lt;/h2&gt;
&lt;p&gt;You can always implicitly authenticate as the dbadmin from a local connection. These dbadmin-specific authentication records are implicit, so they are not listed in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt; system table, and cannot be &lt;a href=&#34;../../../en/sql-reference/statements/drop-statements/drop-authentication/&#34;&gt;dropped&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If the dbadmin user does not have a password, then the  database authenticates them with the &lt;code&gt;trust&lt;/code&gt; method. Otherwise, the database authenticates them with the &lt;code&gt;password&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;In this example, the dbadmin did not have a password and connected to the database from a local connection:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT authentication_method, client_authentication_name FROM vs_sessions;
 authentication_method | client_authentication_name
-----------------------+----------------------------
 ImpTrust              | default: Implicit Trust
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;authenticating-from-a-remote-connection&#34;&gt;Authenticating from a remote connection&lt;/h2&gt;
&lt;h3 id=&#34;fallthrough-authentication&#34;&gt;Fallthrough authentication&lt;/h3&gt;
&lt;p&gt;The database automatically creates the following authentication records and grants them to the &lt;code&gt;public&lt;/code&gt; role (for details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/#&#34;&gt;Client authentication&lt;/a&gt;):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name,is_auth_enabled,auth_host_type,auth_method,auth_priority,is_fallthrough_enabled FROM client_auth;
         auth_name         | is_auth_enabled | auth_host_type | auth_method | auth_priority | is_fallthrough_enabled
---------------------------+-----------------+----------------+-------------+---------------+------------------------
 default_hash_network_ipv4 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_network_ipv6 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_local        | True            | LOCAL          | PASSWORD    |            -1 | False
(3 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These default authentication records ensure that all users with the &lt;code&gt;public&lt;/code&gt; role (which includes dbadmin) have access to the database, provided that any custom authentication records are set to &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/&#34;&gt;fall through&lt;/a&gt; (disabled by default) to the default records.&lt;/p&gt;
&lt;p&gt;For example, the following &lt;code&gt;ldap&lt;/code&gt; authentication enables fallthrough, so if the LDAP server is down, users can still authenticate with &lt;code&gt;password&lt;/code&gt; authentication (as defined by the default records).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION ldap1 METHOD &amp;#39;ldap&amp;#39; LOCAL FALLTHROUGH;
=&amp;gt; ALTER AUTHENTICATION ldap1 SET host=&amp;#39;ldap://localhost:5389&amp;#39;,
    binddn=&amp;#39;cn=Manager,dc=example,dc=com&amp;#39;,
    bind_password=&amp;#39;password&amp;#39;,
    basedn=&amp;#39;ou=dev,dc=example,dc=com&amp;#39;,
    search_attribute=&amp;#39;cn&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;custom-authentication-records&#34;&gt;Custom authentication records&lt;/h3&gt;
&lt;p&gt;A dbadmin-specific authentication record should:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use the &lt;code&gt;hash&lt;/code&gt; authentication method (so authentication is not dependent on some external service).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have a high &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/&#34;&gt;priority&lt;/a&gt; (e.g. 10,000) so it supersedes all other authentication records.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following example &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;creates&lt;/a&gt; an authentication record &lt;code&gt;v_dbadmin_hash&lt;/code&gt; and grants it to the dbadmin user. The &lt;code&gt;hash&lt;/code&gt; method indicates that the dbadmin must provide a password when logging in. The &lt;code&gt;HOST &#39;0.0.0.0/0&#39;&lt;/code&gt; access method indicates that the dbadmin can connect remotely from any IPv4 address:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_dbadmin_hash METHOD &amp;#39;hash&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_dbadmin_hash PRIORITY 10000;
=&amp;gt; GRANT AUTHENTICATION v_dbadmin_hash TO dbadmin;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you want to authenticate as the dbadmin from a local connection, but want to use an authentication record with the &lt;code&gt;HOST&lt;/code&gt; access method, specify the &lt;a href=&#34;../../../en/connecting-to/using-vsql/connecting-from-command-line/command-line-options/h-host/&#34;&gt;--host&lt;/a&gt; option with the hostname or IP address of the database:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ vsql &lt;span class=&#34;code-variable&#34;&gt;database_name&lt;/span&gt; &lt;span class=&#34;code-variable&#34;&gt;user&lt;/span&gt; --host &lt;span class=&#34;code-variable&#34;&gt;hostname_or_ip&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Creating authentication records</title>
      <link>/en/security-and-authentication/client-authentication/creating-authentication-records/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/creating-authentication-records/</guid>
      <description>
        
        
        &lt;p&gt;You can manage client authentication records with &lt;code&gt;vsql&lt;/code&gt;. You must be connected to the database as a supseruser.

&lt;div class=&#34;admonition important&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Important&lt;/h4&gt;
You cannot modify client authentication records using the Administration Tools. The Administration Tools interface allows you to modify the contents of the &lt;code&gt;vertica.conf&lt;/code&gt; file. However, OpenText™ Analytics Database ignores any client authentication information stored in that file.
&lt;/div&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;Create&lt;/a&gt; an authentication records, specifying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The name of the authentication record.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The authentication method, one of the following: &lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;trust&lt;/code&gt;: Users can authenticate with a valid username (that is, without a password).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reject&lt;/code&gt;: Rejects the connection attempt.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hash&lt;/code&gt;: Users must provide a valid username and password. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/hash-authentication/#&#34;&gt;Hash authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;gss&lt;/code&gt;: Authorizes clients that connect to the database with an MIT Kerberos implementation. The Key Distribution Center (KDC) must support Kerberos 5 using the GSS-API. Non-MIT Kerberos implementations must use the GSS-API. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/#&#34;&gt;Kerberos authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ident&lt;/code&gt;: Authenticates the client against a username on an Ident server. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ident-authentication/#&#34;&gt;Ident authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ldap&lt;/code&gt;: Authenticates a client and their username and password with an LDAP or Active Directory server. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ldap-authentication/#&#34;&gt;LDAP authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tls&lt;/code&gt;: Authenticates clients that provide a certificate with a Common Name (CN) that specifies a valid database username. The database must be configured for &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/configuring-client-server-tls/&#34;&gt;mutual mode TLS&lt;/a&gt; to use this method. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/tls-authentication/#&#34;&gt;TLS authentication&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;oauth&lt;/code&gt;: Authenticates a client with an access token. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/oauth-2-0-authentication/#&#34;&gt;OAuth 2.0 authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The access method, one of the following, which specify the allowed connection type:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;LOCAL: Authenticates users or applications that attempt to connect from the same node that the database is running on.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HOST: Authentications users or applications that attempt to connect from a node that has a different IPv4 or IPv6 address than the database. You can use TLS or NO TLS to specify an encrypted or plaintext connection, respectively.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Whether to enable &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/#&#34;&gt;Fallthrough authentication&lt;/a&gt; (disabled by default).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;Grant&lt;/a&gt; the authentication record to a user or role.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;p&gt;The following examples show how to create authentication records.&lt;/p&gt;
&lt;p&gt;Create authentication method &lt;code&gt;localpwd&lt;/code&gt; to authenticate users who are trying to log in from a local host using a password:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION localpwd METHOD &amp;#39;hash&amp;#39; LOCAL;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;v_ldap&lt;/code&gt; that uses LDAP over TLS to authenticate users logging in from the host with the IPv4 address 10.0.0.0/23:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ldap METHOD &amp;#39;ldap&amp;#39; HOST TLS &amp;#39;10.0.0.0/23&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;v_kerberos&lt;/code&gt; to authenticate users who are trying to connect from any host in the networks 2001:0db8:0001:12&lt;em&gt;xx&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_kerberos METHOD &amp;#39;gss&amp;#39; HOST &amp;#39;2001:db8:1::1200/56&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;ldap_mfa&lt;/code&gt; that uses LDAP to authenticate users logging in from the host ldap.vertica.local and enforces multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION ldap_mfa TYPE LDAP HOST &amp;#39;ldap.vertica.local&amp;#39; ENFORCEMFA;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication records with multi-factor authentication.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION ad_auth METHOD &amp;#39;ldap&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39; ENFORCEMFA;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;pw_local&lt;/code&gt; to authenticate users who are trying to log in from a local host using a password with multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION pw_local method &amp;#39;password&amp;#39; local enforcemfa;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;pw_ipv4&lt;/code&gt; to authenticate users logging in from the host with the IPv4 address 0.0.0.0 using a password and enforce multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION pw_ipv4 method &amp;#39;password&amp;#39; host &amp;#39;0.0.0.0/0&amp;#39; enforcemfa;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;pw_ipv6&lt;/code&gt; to authenticate users logging in from a host with the IPv6 address using a password and enforce multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION pw_ipv6 method &amp;#39;password&amp;#39; host &amp;#39;::/0&amp;#39; enforcemfa;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;v_krb&lt;/code&gt; to authenticate users logging in from the host &lt;code&gt;gss&lt;/code&gt; with the IPv4 address 0.0.0.0 and enforce multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_krb method &amp;#39;gss&amp;#39; host &amp;#39;0.0.0.0/0&amp;#39; ENFORCEMFA;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create authentication method &lt;code&gt;v_oauth&lt;/code&gt; to authenticate users logging in from the host &lt;code&gt;oauth&lt;/code&gt; with the IPv4 address 0.0.0.0 and enforce multi-factor authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_oauth METHOD &amp;#39;oauth&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39; ENFORCEMFA;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The following &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/&#34;&gt;authentication record&lt;/a&gt; &lt;code&gt;v_oauth&lt;/code&gt; authenticates users from any IP address by contacting the identity provider to validate the OAuth token (rather than a username and password) and uses the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;validate_type&lt;/code&gt;: The method used to validate the OAuth token. This should be set to &lt;code&gt;IDP&lt;/code&gt; (default) to validate the OAuth token for confidential clients.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;client_id&lt;/code&gt;: The client in the identity provider.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;client_secret&lt;/code&gt;: The client secret generated by the identity provider. This is required if &lt;code&gt;validate_type&lt;/code&gt; is &lt;code&gt;IDP&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;discovery_url&lt;/code&gt;: Also known as the &lt;a href=&#34;https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest&#34;&gt;OpenID Provider Configuration Document&lt;/a&gt;, OpenText™ Analytics Database uses this endpoint to retrieve information about the identity provider&#39;s configuration and other endpoints (Keycloak only).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;introspect_url&lt;/code&gt;: Used by the database to introspect (validate) access tokens. You must specify the &lt;code&gt;introspect_url&lt;/code&gt; if you do not specify the &lt;code&gt;discovery_url&lt;/code&gt; and are not using &lt;code&gt;JWT&lt;/code&gt; validation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If &lt;code&gt;discovery_url&lt;/code&gt; and &lt;code&gt;introspect_url&lt;/code&gt; are both set, &lt;code&gt;discovery_url&lt;/code&gt; takes precedence. The following example sets both for demonstration purposes; in general, you should prefer to set the &lt;code&gt;discovery_url&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_oauth METHOD &amp;#39;oauth&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth SET validate_type = &amp;#39;IDP&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth SET client_id = &amp;#39;vertica&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth SET client_secret = &amp;#39;&lt;span class=&#34;code-variable&#34;&gt;client_secret&lt;/span&gt;&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth SET discovery_url = &amp;#39;https://203.0.113.1:8443/realms/myrealm/.well-known/openid-configuration&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth SET introspect_url = &amp;#39;https://203.0.113.1:8443/realms/myrealm/protocol/openid-connect/token/introspect&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Alternatively, if your identity provider supports the OpenID Connect protocol and your client is public, the database can use JWT validation, where the database validates OAuth tokens by verifying that it was signed by the identity provider&#39;s private key.&lt;/p&gt;
&lt;p&gt;The database does not contact the identity provider for JWT validation, unless &lt;code&gt;jwt_jwks_url&lt;/code&gt; is configured, in which case the database retrieves signing keys from the identity provider&#39;s JWK endpoint.&lt;/p&gt;
&lt;p&gt;JWT validation requires the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;validate_type&lt;/code&gt;: The method used to validate the OAuth token. This should be set to &lt;code&gt;JWT&lt;/code&gt; to validate the OAuth token for public clients.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_issuer&lt;/code&gt;: The issuer of the OAuth token. For Keycloak, this is the &lt;a href=&#34;https://www.keycloak.org/docs/latest/securing_apps/#token-endpoint&#34;&gt;token endpoint&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_user_mapping&lt;/code&gt;: The name of the database user.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At least one of the following key parameters must be set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_rsa_public_key&lt;/code&gt;: In PEM format, the RSA public key used to sign the client&#39;s OAuth token. The database uses this to validate the OAuth token. If your identity provider does not natively provide PEM-formatted public keys, you must convert them to PEM format. For example, keys retrieved from an Okta endpoint are in JWK format and must be converted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_ec_public_key&lt;/code&gt;: In PEM format, the EC public key used to sign the client&#39;s OAuth token. This is the EC key equivalent of &lt;code&gt;jwt_rsa_public_key&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_jwks_url&lt;/code&gt;: URL to retrieve JWKs from the identity provider. All keys returned by this endpoint are used when validating a user logging in with a JWT. This eliminates the need to manually update keys during identity provider key rotation. For Keycloak, the URL format is &lt;code&gt;https://&lt;span class=&#34;code-variable&#34;&gt;keycloak.host&lt;/span&gt;/realms/&lt;span class=&#34;code-variable&#34;&gt;realm&lt;/span&gt;/protocol/openid-connect/certs&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also specify the following parameters to define a whitelist based on fields of the OAuth token:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_accepted_audience_list&lt;/code&gt;: Optional, a comma-delimited list of values to accept from the client JWT&#39;s &lt;code&gt;aud&lt;/code&gt; field. If set, tokens must include in &lt;code&gt;aud&lt;/code&gt; one of the accepted audiences to authenticate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;jwt_accepted_scope_list&lt;/code&gt;: Optional, a comma-delimited list of values to accept from the client JWT&#39;s &lt;code&gt;scope&lt;/code&gt; field. If set, tokens must include in &lt;code&gt;scope&lt;/code&gt; at least one of the accepted scopes to authenticate.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/&#34;&gt;authentication record&lt;/a&gt; &lt;code&gt;v_oauth_jwt&lt;/code&gt; authenticates users from any IP address by verifying that the client&#39;s OAuth token was signed by the identity provider&#39;s private key. It uses a static RSA public key and also requires the user to provide the proper values in the token&#39;s &lt;code&gt;aud&lt;/code&gt; and &lt;code&gt;scope&lt;/code&gt; fields:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_oauth_jwt METHOD &amp;#39;oauth&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET validate_type = &amp;#39;JWT&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET jwt_rsa_public_key = &amp;#39;-----BEGIN PUBLIC KEY-----&lt;span class=&#34;code-variable&#34;&gt;public-key-value&lt;/span&gt;-----END PUBLIC KEY-----&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET jwt_issuer = &amp;#39;https://&lt;span class=&#34;code-variable&#34;&gt;keycloak.host&lt;/span&gt;/realms/&lt;span class=&#34;code-variable&#34;&gt;realm_name&lt;/span&gt;&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET jwt_user_mapping = &amp;#39;preferred_username&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET jwt_accepted_audience_list = &amp;#39;vertica,local&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwt SET jwt_accepted_scope_list = &amp;#39;email,profile,user&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Alternatively, you can use &lt;code&gt;jwt_jwks_url&lt;/code&gt; to automatically retrieve signing keys from the identity provider&#39;s JWK endpoint. This approach eliminates the need to manually update keys during key rotation:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_oauth_jwks METHOD &amp;#39;oauth&amp;#39; HOST &amp;#39;0.0.0.0/0&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwks SET validate_type = &amp;#39;JWT&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwks SET jwt_jwks_url = &amp;#39;https://&lt;span class=&#34;code-variable&#34;&gt;keycloak.host&lt;/span&gt;/realms/&lt;span class=&#34;code-variable&#34;&gt;realm_name&lt;/span&gt;/protocol/openid-connect/certs&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwks SET jwt_issuer = &amp;#39;https://&lt;span class=&#34;code-variable&#34;&gt;keycloak.host&lt;/span&gt;/realms/&lt;span class=&#34;code-variable&#34;&gt;realm_name&lt;/span&gt;&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION v_oauth_jwks SET jwt_user_mapping = &amp;#39;preferred_username&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For example, to reject all plaintext client connections, specify the &lt;code&gt;reject&lt;/code&gt; authentication method and the &lt;code&gt;HOST NO TLS&lt;/code&gt; access method as follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION RejectNoSSL METHOD &amp;#39;reject&amp;#39; HOST NO TLS &amp;#39;0.0.0.0/0&amp;#39;;  --IPv4
=&amp;gt; CREATE AUTHENTICATION RejectNoSSL METHOD &amp;#39;reject&amp;#39; HOST NO TLS &amp;#39;::/0&amp;#39;;       --IPv6
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/modifying-authentication-records/#DeleteAuth&#34;&gt;Deleting Authentication Records &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/enabling-and-disabling-authentication-methods/#&#34;&gt;Enabling and disabling authentication methods&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/granting-and-revoking-authentication-methods/#&#34;&gt;Granting and revoking authentication methods&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/modifying-authentication-records/#&#34;&gt;Modifying authentication records&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Modifying authentication records</title>
      <link>/en/security-and-authentication/client-authentication/modifying-authentication-records/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/modifying-authentication-records/</guid>
      <description>
        
        
        &lt;p&gt;To modify existing authentication records, you must first be connected to your database. The following examples show how to make changes to your authentication records. For more information see &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/#&#34;&gt;ALTER AUTHENTICATION&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;rename-an-authentication-method&#34;&gt;Rename an authentication method&lt;/h2&gt;
&lt;p&gt;Rename the &lt;code&gt;v_kerberos&lt;/code&gt; authentication method to &lt;code&gt;K5&lt;/code&gt;, and enable it. All users who have been associated with the &lt;code&gt;v_kerberos&lt;/code&gt; authentication method are now associated with the &lt;code&gt;K5&lt;/code&gt; method granted instead.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION v_kerberos RENAME TO K5 ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;specify-a-priority-for-an-authentication-method&#34;&gt;Specify a priority for an authentication method&lt;/h2&gt;
&lt;p&gt;Specify a priority of 10 for &lt;code&gt;K5&lt;/code&gt; authentication:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION K5 PRIORITY 10;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For more information see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/#&#34;&gt;Authentication record priority&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;change-a-parameter&#34;&gt;Change a parameter&lt;/h2&gt;
&lt;p&gt;Set the &lt;code&gt;system_users&lt;/code&gt; parameter for &lt;code&gt;ident1&lt;/code&gt; authentication to &lt;code&gt;root&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION ident1 METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION ident1 SET system_users=&amp;#39;root&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Change the IP address and specify the parameters for an LDAP authentication method named &lt;code&gt;Ldap1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In this example, you specify the bind parameters for the LDAP server. OpenText™ Analytics Database connects to the LDAP server, which authenticates the database client. If the authentication succeeds, the database authenticates any users who have been granted the &lt;code&gt;Ldap1&lt;/code&gt; authentication method on the designated LDAP server:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION Ldap1 METHOD &amp;#39;ldap&amp;#39; HOST &amp;#39;172.16.65.196&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap1 SET host=&amp;#39;ldap://172.16.65.177&amp;#39;,
   binddn_prefix=&amp;#39;cn=&amp;#39;, binddn_suffix=&amp;#39;,dc=qa_domain,dc=com&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Change the IP address, and specify the parameters for an LDAP authentication method named &lt;code&gt;Ldap1&lt;/code&gt;. Assume that the database does not have enough information to create the distinguished name (DN) for a user attempting to authenticate. Therefore, in this case, you must specify to use LDAP search and bind:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION LDAP1 METHOD &amp;#39;ldap&amp;#39; HOST &amp;#39;172.16.65.196&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION Ldap1 SET host=&amp;#39;ldap://172.16.65.177&amp;#39;,
basedn=&amp;#39;dc=qa_domain,dc=com&amp;#39;,binddn=&amp;#39;cn=Manager,dc=qa_domain,
dc=com&amp;#39;,search_attribute=&amp;#39;cn&amp;#39;,bind_password=&amp;#39;secret&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;change-the-associated-method&#34;&gt;Change the associated method&lt;/h2&gt;
&lt;p&gt;Change the &lt;code&gt;localpwd&lt;/code&gt; authentication from trust to hash:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION localpwd METHOD &amp;#39;trust&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION localpwd METHOD &amp;#39;hash&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ALTER AUTHENTICATION validates the parameters you enter. If there are errors, it disables the authentication method that you are trying to modify.&lt;/p&gt;
&lt;h2 id=&#34;using-the-administration-tools&#34;&gt;Using the administration tools&lt;/h2&gt;
&lt;p&gt;The advantages of using the Administration Tools are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You do not have to connect to the database&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The editor verifies that records are correctly formed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The editor maintains records so they are available to you to edit later&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

You must restart the database to implement your changes.

&lt;/div&gt;
&lt;p&gt;For information about using the Administration Tools to create and edit authentication records, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/creating-authentication-records/#&#34;&gt;Creating authentication records&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;DeleteAuth&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;deleting-authentication-records&#34;&gt;Deleting authentication records&lt;/h2&gt;
&lt;p&gt;To delete client authentication record, use &lt;a href=&#34;../../../en/sql-reference/statements/drop-statements/drop-authentication/#&#34;&gt;DROP AUTHENTICATION&lt;/a&gt;. To use this approach, you have to be connected to your database.&lt;/p&gt;
&lt;p&gt;To delete an authentication record for md5_auth use the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; DROP AUTHENTICATION md5_auth;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To delete an authentication record for a method that has been granted to a user, use the CASCADE keyword:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION localpwd METHOD &amp;#39;password&amp;#39; LOCAL;
=&amp;gt; GRANT AUTHENTICATION localpwd TO jsmith;
=&amp;gt; DROP AUTHENTICATION localpwd CASCADE;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/creating-authentication-records/#&#34;&gt;Creating authentication records&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/granting-and-revoking-authentication-methods/#&#34;&gt;Granting and revoking authentication methods&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Authentication record priority</title>
      <link>/en/security-and-authentication/client-authentication/authentication-record-priority/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/authentication-record-priority/</guid>
      <description>
        
        
        &lt;p&gt;Each authentication record has a &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-authentication/&#34;&gt;priority&lt;/a&gt;. If a user is &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/&#34;&gt;granted&lt;/a&gt; more than one authentication record, OpenText™ Analytics Database attempts to authenticate the user with the authentication record with the highest priority and rejects the user if authentication fails.&lt;/p&gt;
&lt;p&gt;There are two ways to authenticate with a record other than that with the highest priority:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/#&#34;&gt;Fallthrough authentication&lt;/a&gt;: If authentication fails, the database attempts to authenticate the client with the record with the next highest priority.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-filtering/#&#34;&gt;Authentication filtering&lt;/a&gt;: Clients can send the credentials required for a particular authentication method to authenticate with a record that uses that method.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;determining-authentication-priority&#34;&gt;Determining authentication priority&lt;/h2&gt;
&lt;p&gt;The following factors contribute to an authentication record&#39;s priority, as reflected in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt; system table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT auth_name, auth_method, auth_priority, method_priority, address_priority FROM client_auth;
   auth_name   | auth_method | auth_priority | method_priority | address_priority
---------------+-------------+---------------+-----------------+------------------
 ldap_auth     | LDAP        |             5 |               5 |               96
 hash_auth     | HASH        |             5 |               2 |              126
 tls_auth      | TLS         |             0 |               5 |               96
 oauth_auth    | OAUTH       |             0 |               5 |               96
 gss_auth      | GSS         |             0 |               5 |               96
 trust_auth    | TRUST       |             0 |               0 |               96
 reject_auth   | REJECT      |             0 |              10 |               96
(7 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;p&gt;Greater values indicate higher priorities. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A priority of 10 is higher than a priority of 5.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A priority 0 is the lowest possible value.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;p&gt;Priorities are divided into tiers and listed in order of importance; in the event of a tie at one priority tier, the database checks the next priority tier. For example, if a user had both &lt;code&gt;ldap&lt;/code&gt; and &lt;code&gt;hash&lt;/code&gt; authentication records with an &lt;code&gt;auth_priority&lt;/code&gt; of 5, the database would attempt to use the &lt;code&gt;ldap&lt;/code&gt; authentication record because it has a greater &lt;code&gt;method_priority&lt;/code&gt; value:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;auth_priority&lt;/code&gt;: The priority explicitly set with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/#&#34;&gt;ALTER AUTHENTICATION&lt;/a&gt; (default: 0).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;method_priority&lt;/code&gt;: The priority specific to the authentication method. These priorities are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;trust&lt;/code&gt;: 0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hash&lt;/code&gt;: 2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ldap&lt;/code&gt;: 5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tls&lt;/code&gt;: 5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;oauth&lt;/code&gt;: 5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;gss&lt;/code&gt;: 5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reject&lt;/code&gt;: 10&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;address_priority&lt;/code&gt;: The priority for IP address specified in &lt;code&gt;HOST [ TLS | NO TLS ] &#39;&lt;/code&gt;&lt;em&gt;&lt;code&gt;host-ip-address&lt;/code&gt;&lt;/em&gt;&lt;code&gt;&#39;&lt;/code&gt;. This priority is determined by the size of the netmask of the address; fewer zeros indicate greater specificity, and therefore higher priority. &lt;code&gt;LOCAL&lt;/code&gt; has the lowest priority: 0.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;setting-authentication-priority&#34;&gt;Setting authentication priority&lt;/h2&gt;
&lt;p&gt;To set authentication priority:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION &lt;span class=&#34;code-variable&#34;&gt;authentication_name&lt;/span&gt; PRIORITY &lt;span class=&#34;code-variable&#34;&gt;value&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth-params/#&#34;&gt;CLIENT_AUTH_PARAMS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/#&#34;&gt;Client authentication&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Viewing information about client authentication records</title>
      <link>/en/security-and-authentication/client-authentication/viewing-information-about-client-authentication-records/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/viewing-information-about-client-authentication-records/</guid>
      <description>
        
        
        &lt;p&gt;For information about client authentication records that you have configured for your database, query the following system tables in the V_CATALOG schema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth/#&#34;&gt;CLIENT_AUTH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/client-auth-params/#&#34;&gt;CLIENT_AUTH_PARAMS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/password-auditor/#&#34;&gt;PASSWORD_AUDITOR&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/user-client-auth/#&#34;&gt;USER_CLIENT_AUTH&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To determine the details behind the client authentication used for a particular user session, query the following tables in the V_MONITOR schema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/sessions/&#34;&gt;SESSIONS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/user-sessions/&#34;&gt;USER_SESSIONS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Enabling and disabling authentication methods</title>
      <link>/en/security-and-authentication/client-authentication/enabling-and-disabling-authentication-methods/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/enabling-and-disabling-authentication-methods/</guid>
      <description>
        
        
        &lt;p&gt;When you create an authentication method, OpenText™ Analytics Database stores it in the catalog and enables it automatically. To enable or disable an authentication method, use the &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/#&#34;&gt;ALTER AUTHENTICATION&lt;/a&gt; statement. To use this approach, you must be connected to your database.&lt;/p&gt;
&lt;p&gt;If an authentication method has not been enabled, the database cannot use it to authenticate users and clients trying to connect to the database.&lt;/p&gt;
&lt;p&gt;To enable an authentication method:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ALTER AUTHENTICATION v_kerberos ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To disable this authentication method:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ALTER AUTHENTICATION v_kerberos DISABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/creating-authentication-records/#&#34;&gt;Creating authentication records&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/modifying-authentication-records/#DeleteAuth&#34;&gt;Deleting Authentication Records&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/granting-and-revoking-authentication-methods/#&#34;&gt;Granting and revoking authentication methods&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/modifying-authentication-records/#&#34;&gt;Modifying authentication records&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Granting and revoking authentication methods</title>
      <link>/en/security-and-authentication/client-authentication/granting-and-revoking-authentication-methods/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/granting-and-revoking-authentication-methods/</guid>
      <description>
        
        
        &lt;p&gt;Before OpenText™ Analytics Database can validate a user or client through an authentication method, you must first associate that authentication method with the user or role that requires it, with &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-authentication/#&#34;&gt;GRANT (authentication)&lt;/a&gt;. When that user or role no longer needs to connect to the database using that method, you can disassociate that authentication from that user with REVOKE AUTHENTICATION.&lt;/p&gt;
&lt;h2 id=&#34;grant-authentication-methods&#34;&gt;Grant authentication methods&lt;/h2&gt;
&lt;p&gt;You can grant an authentication method to a specific user or role. You can also specify the default authentication method by granting an authentication method to &lt;code&gt;PUBLIC&lt;/code&gt;, as in the following examples.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Associate &lt;code&gt;v_ldap&lt;/code&gt; authentication with user &lt;code&gt;jsmith&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; GRANT AUTHENTICATION v_ldap TO jsmith;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Associate &lt;code&gt;v_gss&lt;/code&gt; authentication to the role &lt;code&gt;DBprogrammer&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
=&amp;gt; CREATE ROLE DBprogrammer;
=&amp;gt; GRANT AUTHENTICATION v_gss TO DBprogrammer;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Associate client authentication method &lt;code&gt;v_localpwd&lt;/code&gt; with role &lt;code&gt;PUBLIC&lt;/code&gt;, which is assigned by default to all users:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; GRANT AUTHENTICATION v_localpwd TO PUBLIC;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;revoke-authentication-methods&#34;&gt;Revoke authentication methods&lt;/h2&gt;
&lt;p&gt;If you no longer want to authenticate a user or client with a given authentication method, use the &lt;a href=&#34;../../../en/sql-reference/statements/revoke-statements/revoke-authentication/#&#34;&gt;REVOKE (authentication)&lt;/a&gt; statement as in the following examples.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Revoke &lt;code&gt;v_ldap&lt;/code&gt; authentication from user &lt;code&gt;jsmith&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; REVOKE AUTHENTICATION v_ldap FROM jsmith;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Revoke &lt;code&gt;v_gss&lt;/code&gt; authentication from the role &lt;code&gt;DBprogrammer&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; REVOKE AUTHENTICATION v_gss FROM DBprogrammer;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Revoke &lt;code&gt;localpwd&lt;/code&gt; as the default client authentication method:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; REVOKE AUTHENTICATION localpwd FROM PUBLIC;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;


      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Hiding database usernames</title>
      <link>/en/security-and-authentication/client-authentication/hiding-db-usernames/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/hiding-db-usernames/</guid>
      <description>
        
        
        &lt;p&gt;If you want to keep certain database usernames a secret from connecting clients and your authentication records do not use &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/#&#34;&gt;Fallthrough authentication&lt;/a&gt;, then these two user groups must share the same single &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/&#34;&gt;authentication method&lt;/a&gt; (not necessarily the same authentication record):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Users whose usernames must be kept secret.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Users with the PUBLIC role.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your authentication records use fallthrough, then ensure that the first authentication method that prompts for a password in the authentication chain is the same for both the secret users and the PUBLIC role. The following methods prompt for a password:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/hash-authentication/&#34;&gt;&lt;code&gt;hash&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ldap-authentication/&#34;&gt;&lt;code&gt;ldap&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple way to satisfy this condition is by duplicating the fallthrough chain for both groups with the same methods. For example, a valid authentication chain would be &lt;code&gt;tls&lt;/code&gt; &amp;gt; &lt;code&gt;ldap&lt;/code&gt; for both the secret users and the PUBLIC role.&lt;/p&gt;
&lt;p&gt;Another valid configuration would be &lt;code&gt;tls&lt;/code&gt; &amp;gt; &lt;code&gt;ldap&lt;/code&gt; &amp;gt; &lt;code&gt;hash&lt;/code&gt; for secret users, and &lt;code&gt;ldap&lt;/code&gt; for the PUBLIC role.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Hash authentication</title>
      <link>/en/security-and-authentication/client-authentication/hash-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/hash-authentication/</guid>
      <description>
        
        
        &lt;p&gt;The &lt;code&gt;hash&lt;/code&gt; authentication method authenticates users with passwords.&lt;/p&gt;
&lt;p&gt;In general, you should prefer &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/configuring-client-authentication/&#34;&gt;other authentication methods&lt;/a&gt; over &lt;code&gt;hash&lt;/code&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Ident authentication</title>
      <link>/en/security-and-authentication/client-authentication/ident-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/ident-authentication/</guid>
      <description>
        
        
        &lt;p&gt;The Ident protocol, defined in &lt;a href=&#34;http://www.ietf.org/rfc/rfc1413&#34;&gt;RFC 1413&lt;/a&gt;, authenticates a database user with a system user name.To see if that system user can log in without specifying a password, you configure OpenText™ Analytics Database client authentication to query an Ident server. With this feature, the DBADMIN user can run automated scripts to execute tasks on the database server.

&lt;div class=&#34;admonition caution&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Caution&lt;/h4&gt;

Ident responses can be easily spoofed by untrusted servers. Use Ident authentication only on local connections, where the Ident server is installed on the same computer as the database server.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Following the instructions in these topics to install, set up, and configure Ident authentication for your database:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ident-authentication/installing-and-setting-up-an-ident-server/#&#34;&gt;Installing and setting up an ident server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/ident-authentication/configuring-ident-authentication-db-users/#&#34;&gt;Configuring ident authentication for database users&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;p&gt;The following examples show several ways to configure Ident authentication.&lt;/p&gt;
&lt;p&gt;Allow &lt;code&gt;system_user1&lt;/code&gt; to connect to the database as &lt;code&gt;vuser1&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ident METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION v_ident SET system_users=&amp;#39;system_user1&amp;#39;;
=&amp;gt; GRANT AUTHENTICATION v_ident to vuser1;
=&amp;gt; ALTER AUTHENTICATION v_ident ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Allow &lt;code&gt;system_user1&lt;/code&gt;, &lt;code&gt;system_user2&lt;/code&gt;, and &lt;code&gt;system_user3&lt;/code&gt; to connect to the database as &lt;code&gt;vuser1&lt;/code&gt;. Use colons (:) to separate the user names:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ident METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION v_ident SET system_users=&amp;#39;system_user1:system_user2:system_user3&amp;#39;;
=&amp;gt; GRANT AUTHENTICATION v_ident TO vuser1;
=&amp;gt; ALTER AUTHENTICATION v_ident ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Associate the authentication with &lt;code&gt;Public&lt;/code&gt; using a GRANT AUTHENTICATION statement. The users, &lt;code&gt;system_user1&lt;/code&gt;, &lt;code&gt;system_user2&lt;/code&gt;, and &lt;code&gt;system_user3&lt;/code&gt; can now connect to the database as any database user:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ident METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION v_ident SET system_users=&amp;#39;system_user1:system_user2:system_user3&amp;#39;;
=&amp;gt; GRANT AUTHENTICATION v_ident to Public;
=&amp;gt; ALTER AUTHENTICATION v_ident ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Set the &lt;code&gt;system_users&lt;/code&gt; parameter to &lt;code&gt;*&lt;/code&gt; to allow any system user to connect to the database as &lt;code&gt;vuser1&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ident METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION v_ident SET system_users=&amp;#39;*&amp;#39;;
=&amp;gt; GRANT AUTHENTICATION v_ident TO vuser1;
=&amp;gt; ALTER AUTHENTICATION v_ident ENABLE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Using a GRANT statement, associate the &lt;code&gt;v_ident&lt;/code&gt; authentication with &lt;code&gt;Public&lt;/code&gt; to allow &lt;code&gt;system_user1&lt;/code&gt; to log into the database as any database user:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE AUTHENTICATION v_ident METHOD &amp;#39;ident&amp;#39; LOCAL;
=&amp;gt; ALTER AUTHENTICATION v_ident SET system_users=&amp;#39;system_user1&amp;#39;;
=&amp;gt; GRANT AUTHENTICATION v_ident to Public;
=&amp;gt; ALTER AUTHENTICATION v_ident ENABLE;
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Kerberos authentication</title>
      <link>/en/security-and-authentication/client-authentication/kerberos-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/kerberos-authentication/</guid>
      <description>
        
        
        &lt;p&gt;Kerberos authentication uses the following components to perform user authentication.&lt;/p&gt;
&lt;h2 id=&#34;client-package&#34;&gt;Client package&lt;/h2&gt;
&lt;p&gt;The Kerberos 5 client package communicates with the KDC server. This package is not included as part of the OpenText™ Analytics Database installation. Kerberos software is built into Microsoft Windows. If you are using another operating system, you must obtain and install the client package.&lt;/p&gt;
&lt;p&gt;If you do not already have the Kerberos 5 client package on your system, download it from the &lt;a href=&#34;http://web.mit.edu/kerberos/dist/&#34;&gt;MIT Kerberos Distribution page&lt;/a&gt;. Install the package on each database server and client used in Kerberos authentication, except the KDC itself.&lt;/p&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;http://web.mit.edu/kerberos/krb5-devel/doc/&#34;&gt;Kerberos documentation&lt;/a&gt; for installation instructions.&lt;/p&gt;
&lt;h2 id=&#34;service-principals&#34;&gt;Service principals&lt;/h2&gt;
&lt;p&gt;A service principal consists of a host name, a service name, and a realm to which a set of credentials gets assigned (service/hostname@REALM). These credentials connect to the service, which is a host that you connect to over your network and authenticate using the KDC.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/configure-kerberos-authentication/specify-kdc-information-and-configure-realms/#&#34;&gt;Specify KDC information and configure realms&lt;/a&gt; to create the realm name. The host name must match the value supplied by the operating system. Typically this is the fully qualified host name. If the host name part of your principal does not match the value supplied by the operating system, Kerberos authentication fails.&lt;/p&gt;
&lt;p&gt;Some systems use a hosts file (/etc/hosts or /etc/hostnames) to define host names. A hosts file can define more than one name for a host. The operating system supplies the first entry, so use that in your principal. For example, if your hosts file contains:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;192.168.1.101 v_vmart_node0001.example.com v_vmart_node0001
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;then use v_vmart_node0001.example.com as the hostname value.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

Depending on your configuration it may be safer to use the fully qualified domain name rather than the hostname.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Configure the following as Kerberos principals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Each client (users or applications that connects to the database)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The database server&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the following topics for more information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/configure-kerberos-authentication/&#34;&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/configure-kerberos-authentication/#&#34;&gt;Configure OpenText&amp;amp;trade; Analytics Database for Kerberos authentication&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/client-authentication/kerberos-authentication/configure-clients-kerberos-authentication/&#34;&gt;Configure Clients for Kerberos Authentication&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;keytab-files&#34;&gt;Keytab files&lt;/h2&gt;
&lt;p&gt;Principals are stored in encrypted keytab files. The keytab file contains the credentials for the database principal. The keytab allows the database server to authenticate itself to the KDC. You need the keytab so that the database does not have to prompt for a password.&lt;/p&gt;
&lt;p&gt;Create one service principal for each node in your cluster. You can then either create individual keytab files (one for each node containing only that node&#39;s principal) or create one keytab file containing all the principals.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create one keytab file with all principals&lt;/strong&gt; to simplify setup: all nodes have the same file, making initial setup easier. If you add nodes later you either update (and redistribute) the global keytab file or make separate keytabs for the new nodes. If a principal is compromised it is compromised on all nodes where it is present in a keytab file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create separate keytab files on each node&lt;/strong&gt; to simplify maintenance. Initial setup is more involved as you must create a different file on each node, but no principals are shared across nodes. If you add nodes later you create keytabs on the new nodes. Each node&#39;s ke ytab contains only one principal, the one to use for that node.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ticket-granting-ticket&#34;&gt;Ticket-granting ticket&lt;/h2&gt;
&lt;p&gt;The Ticket-Granting Ticket (TGT) retrieves service tickets that authenticates users to servers in the domain. Future login requests use the cached HTTP Service Ticket for authentication, unless it has expired as set in the ticket_lifetime parameter in krb5.conf.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;MultiRealmSupport&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;multi-realm-support&#34;&gt;Multi-realm support&lt;/h2&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

When assigning multiple realms to an authentication record, keep in mind that the database cannot distinguish between users from one realm and users from the database realm. This allows the same user to log in to the database from multiple realms at the same time.

&lt;/div&gt;
&lt;p&gt;The database provides multi-realm support for Kerberos authentication using the SET param=value parameter in &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-authentication/#&#34;&gt;ALTER AUTHENTICATION&lt;/a&gt; with REALM as the parameter:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER AUTHENTICATION krb_auth_users set REALM=&amp;#39;USERS.COM&amp;#39;;
=&amp;gt; ALTER AUTHENTICATION krb_auth_realmad set REALM=&amp;#39;REALM_AD.COM&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This allows you to assign a different realm so that users from another realm can authenticate to the database.&lt;/p&gt;
&lt;p&gt;Mutli-realm support applies to GSS authentication types only. You can have one realm per authentication method. If you have multiple authentication methods, each can have its own realm:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT * FROM client_auth;
auth_oid | auth_name | is_auth_enabled | auth_host_type | auth_host_address | auth_method | auth_parameters     | auth_priority
---------+-----------+-----------------+----------------+-------------------+-------------+-----------------+-----------------
45035996 | krb001    |   True          |   HOST         |  0.0.0.0/0        |  GSS        | realm=USERS.COM     |  0
45035997 | user_auth |   True          |   LOCAL        |                   |  TRUST      |                     |  1000
45035737 | krb002    |   True          |   HOST         |  0.0.0.0/0        |  GSS        | realm=REALM_AD.COM  |  1
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: LDAP authentication</title>
      <link>/en/security-and-authentication/client-authentication/ldap-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/ldap-authentication/</guid>
      <description>
        
        
        &lt;p&gt;Lightweight Directory Access Protocol (LDAP) is an authentication method that works like password authentication. The main difference is that the LDAP method authenticates clients trying to access your OpenText™ Analytics Database against an LDAP or Active Directory server. Use LDAP authentication when your database needs to authenticate a user with an LDAP or Active Directory server.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: OAuth 2.0 authentication</title>
      <link>/en/security-and-authentication/client-authentication/oauth-2-0-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/oauth-2-0-authentication/</guid>
      <description>
        
        
        &lt;p&gt;Rather than with a username and password, users can authenticate to OpenText™ Analytics Database by first verifying their identity with an identity provider, receiving an OAuth token, and then passing the token to the database.&lt;/p&gt;
&lt;p&gt;OAuth in the database is tested with Keycloak, Okta, and OTDS but other providers should work if they support the &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7662&#34;&gt;RFC 7662 Token Introspection&lt;/a&gt; standard.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: TLS authentication</title>
      <link>/en/security-and-authentication/client-authentication/tls-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/client-authentication/tls-authentication/</guid>
      <description>
        
        
        &lt;p&gt;The &lt;code&gt;tls&lt;/code&gt; authentication method authenticates users that can establish a mutual mode &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/configuring-client-server-tls/&#34;&gt;client-server TLS connection&lt;/a&gt; using a certificate that specifies a valid database username in the Common Name (CN) field.&lt;/p&gt;
&lt;p&gt;Before you create and use a &lt;code&gt;tls&lt;/code&gt; authentication method, you must configure Vertica for &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/&#34;&gt;client-server TLS in mutual mode&lt;/a&gt; (disabled by default).&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
