Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » LDAP 用户验证

 

创建 LDAP 用户验证环境 (SQL)

创建 LDAP 用户验证环境,方法为:创建 LDAP 服务器配置对象、创建使用该 LDAP 服务器的登录策略、创建使用该登录策略对 LDAP 服务器进行验证的用户。

前提条件

必须具有 LDAP 服务器。

您必须具有以下系统特权:

  • SET ANY SECURITY OPTION
  • MANAGE ANY LDAP SERVER
  • MANAGE ANY LOGIN POLICY
  • MANAGE ANY USER
 任务
  1. (可选)要启用 TLS 加密以与 LDAP 服务器通信,需要标识一个证书文件以便服务器使用。以下语句是说明如何指定证书文件的示例。

    SET OPTION PUBLIC.trusted_certificates_file='c:\\certificates\\trusted.txt';

    要在后续步骤中启用 TLS 加密,应在 TLS OFF 子句出现的每个示例中,将该子句更改为 TLS ON。

  2. 执行 VALIDATE LDAP SERVER 语句,以测试与 LDAP 服务器的连接。

    例如,以下语句验证现有 LDAP 服务器的连接属性。数据库服务器使用提供的证书连接到 LDAP 服务器。

    VALIDATE LDAP SERVER
        SEARCH DN
            URL 'ldap://iq10web:389/dc=sybase,dc=com?dn?sub?uid=*'
            ACCESS ACCOUNT 'cn=Manager,dc=sybase,dc=com'
            IDENTIFIED BY 'Not4YourEyes'
        AUTHENTICATION URL 'ldap://iq10web:389/'
        CONNECTION TIMEOUT 1000
        CONNECTION RETRIES 3
        TLS OFF;

    此 LDAP 服务器使用端口 389 进行通信。本示例不启用 TLS 加密 (TLS OFF)。执行 VALIDATE LDAP SERVER 语句时必须没有错误,才能继续下一个步骤。

  3. 执行 CREATE LDAP SERVER 语句,以创建 LDAP 服务器配置对象。

    例如,以下语句定义一个可用于用户验证的 LDAP 服务器配置对象。

    CREATE LDAP SERVER prim_ldap
        SEARCH DN
            URL 'ldap://iq10web:389/dc=sybase,dc=com?dn?sub?uid=*'
            ACCESS ACCOUNT 'cn=Manager,dc=sybase,dc=com'
            IDENTIFIED BY 'Not4YourEyes'
        AUTHENTICATION URL 'ldap://iq10web:389/'
        CONNECTION TIMEOUT 1000
        CONNECTION RETRIES 3
        TLS OFF;

    与 VALIDATE LDAP SERVER 语句不同,CREATE LDAP SERVER 语句不尝试连接到 LDAP 服务器。

  4. 执行 CREATE LDAP SERVER 语句,以创建第二个 LDAP 服务器配置对象,用于进行故障转移。此步骤可选,但要执行后续步骤则需要完成此步骤。

    例如,以下语句定义一个可用作用户验证故障转移的 LDAP 服务器配置对象。

    CREATE LDAP SERVER sec_ldap
        SEARCH DN
            URL 'ldap://iq10web:390/dc=sybase,dc=com?dn?sub?uid=*'
            ACCESS ACCOUNT 'cn=Manager,dc=sybase,dc=com'
            IDENTIFIED BY 'Not4YourEyes'
        AUTHENTICATION URL 'ldap://iq10web:390/'
        CONNECTION TIMEOUT 1000
        CONNECTION RETRIES 3
        TLS OFF;

    此 LDAP 服务器使用端口 390 进行通信。

  5. 执行 SET OPTION 语句,将登录模式更改为启用 LDAP 用户验证。

    例如,以下语句同时启用标准用户验证和 LDAP 用户验证。

    SET OPTION PUBLIC.login_mode='Standard,LDAPUA';

    可查询 login_mode 选项的当前设置,如下所示:

    SELECT connection_property('login_mode');
  6. 执行 CREATE LOGIN POLICY 语句,创建新登录策略。

    例如,以下语句创建可用于用户验证的新登录策略。

    CREATE LOGIN POLICY ldap_policy_both
      LDAP_PRIMARY_SERVER=prim_ldap
      LDAP_SECONDARY_SERVER=sec_ldap
      LDAP_FAILOVER_TO_STD=ON;

    主 LDAP 服务器和次级 LDAP 服务器的名称在此登录策略中指定。如果与此登录策略相关联的用户验证失败,将尝试标准验证(如果登录模式允许)。可查询登录策略的当前设置,如下所示:

    SELECT lpo.* FROM sysloginpolicyoption AS lpo, sysloginpolicy AS lp
      WHERE lpo.login_policy_id = lp.login_policy_id
        AND lp.login_policy_name = 'ldap_policy_both';
  7. 执行 CREATE USER 语句创建新用户 ID,该用户具有在前一步骤中定义的 LDAP 登录策略。

    例如,以下语句创建一个新用户 ID,该用户对主 LDAP 服务器或次级 LDAP 服务器进行验证。

    CREATE USER ldap_user01 LOGIN POLICY ldap_policy_both;

    省略 IDENTIFIED BY 子句。IDENTIFIED BY 子句用于指定标准验证中使用的口令。如果使用此子句指定口令,该口令不必与 LDAP 服务器验证的口令相同。因为此口令会在用户首次对 LDAP 服务器验证成功时被替换,所以此处省略 IDENTIFIED BY 子句。

  8. 激活 LDAP 服务器以便快速使用。以下语句激活主 LDAP 服务器和次级 LDAP 服务器。

    ALTER LDAP SERVER prim_ldap WITH ACTIVATE;
    ALTER LDAP SERVER sec_ldap WITH ACTIVATE;

    可使用以下查询确定所有 LDAP 服务器的当前状态。

    call sa_get_ldapserver_status;

    结果集的 ldsrv_state 列指示两个 LDAP 服务器处于 READY 状态。

  9. 执行 Interactive SQL CONNECT 语句,以连接到使用 LDAP 用户验证的数据库。

    例如,以下语句使用指定用户 ID 和口令连接到示例数据库。

    CONNECT DATABASE demo USER ldap_user01 IDENTIFIED BY 'abcd1234';

    如果 LDAP 服务器用户验证失败,则将尝试标准验证。如果标准口令与提供的口令不匹配(例如,因在 LDAP 验证期间未更新口令),则标准验证可能失败。

结果

用户通过 LDAP 用户验证连接到 SQL Anywhere 数据库服务器。

 另请参见