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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 启动并连接到数据库 » SQL Anywhere 数据库连接 » Kerberos 验证

 

将 SQL Anywhere 配置为使用 Kerberos

  1. 在 SQL Anywhere 数据库上设置 Kerberos 验证。请参见设置 Kerberos 验证

  2. 使用 -krb 或 -kr 选项启动 SQL Anywhere 服务器,以启用 Kerberos 验证,或者使用 -kl 选项指定 GSS-API 库的位置并启用 Kerberos。

  3. 将公共或临时公共选项 login_mode 更改为包含 Kerberos 的值。您必须具有 DBA 权限才能更改此选项的设置。Login_mode 数据库选项确定是否允许 Kerberos 登录。因为数据库选项只作用于它们所在的数据库,所以,不同的数据库即使是在同一服务器内装载和运行,也可以有不同的 Kerberos 登录设置。例如:

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

    Login_mode 数据库选项接受一个或多个下列值:

    • Standard   允许标准登录。这是缺省值。标准连接登录必须提供用户 ID 和口令,且不使用集成或 Kerberos 连接参数。

    • Integrated   允许集成登录。

    • Kerberos   允许 Kerberos 登录。

    小心

    将 login_mode 数据库选项设置为 Kerberos,会使只有被授予了 Kerberos 登录映射的用户才能进行连接。如果用户不具有 DBA 权限,则尝试使用用户 ID 和口令连接会生成错误。

  4. 为客户端创建数据库用户 ID。只要现有数据库用户拥有正确的权限,您就可以使用该用户的 ID 进行 Kerberos 登录。例如:

    CREATE USER "kerberos-user"
    IDENTIFIED BY abc123;
  5. 执行 GRANT KERBEROS LOGIN TO 语句,以创建从客户端的 Kerberos 主体到现有数据库用户 ID 的映射。此语句需要 DBA 权限。例如:

    GRANT KERBEROS LOGIN TO "pchin@MYREALM.COM" 
    AS USER "kerberos-user";

    如果想要在使用的 Kerberos 主体没有映射的情况下进行连接,请确保具有 Guest 数据库用户 ID 且拥有口令。请参见创建缺省的集成登录用户

  6. 确保客户端用户已经使用其 Kerberos 主体登录(具有有效的 Kerberos 票据授予票据)且客户端的 Kerberos 票据未过期。Windows 用户登录到已拥有票据授予票据的域帐户,使他们可以对服务器进行验证(假设他们的主体拥有足够权限)。

    票据授予票据是一种通过用户口令加密的 Kerberos 票据,票据授予服务使用该票据来验证用户的身份。

  7. 从客户端连接,指定 KERBEROS 连接参数(通常为 KERBEROS=YES,但也可以使用 KERBEROS=SSPI 或 KERBEROS=GSS-API-library-file)。如果指定了用户 ID 或口令连接参数,则它们将被忽略。例如:

    dbisql -c "KERBEROS=YES;ENG=my_server_princ"
Interactive SQL 示例

例如,某个用户已经登录,且登录时使用的用户配置文件名与服务器的缺省数据库中的 Kerberos 登录映射相匹配,那么,使用以下 Interactive SQL 语句尝试连接就会成功:

CONNECT USING 'KERBEROS=YES';

满足下列所有条件时,Interactive SQL 语句 CONNECT 即可以连接到数据库:

  • 服务器当前正在运行。

  • 当前服务器上的缺省数据库能够接受使用 Kerberos 验证的连接。

  • 已经为用户的当前 Kerberos 主体创建 Kerberos 登录映射。

  • 如果服务器显示一个窗口,提示用户输入更多连接信息(例如,使用 Interactive SQL 时出现这种情况),用户单击 [确定] 并且 提供更多信息。

另请参见