【问题标题】:C++ How to use MIT Kerberos with libpq?C++ 如何将 MIT Kerberos 与 libpq 一起使用?
【发布时间】:2014-06-29 00:56:46
【问题描述】:

我有一个 windows c++ 应用程序,它使用 libpq 与 PostgreSQL 一起工作。

我的代码是:

std::string conninfo = "host=localhost port=5432 dbname=test connect_timeout=10";
_connectionHandlerPtr = PQconnectdb(conninfo.c_str());

现在我需要使用 MIT Kerberos 进行身份验证。 我安装了 MIT Kerberos。

我需要在我的代码中做什么? 我需要在 PostgreSQL 配置中更改什么?

【问题讨论】:

    标签: c++ postgresql kerberos libpq


    【解决方案1】:

    我认为您不需要更改代码中的任何内容。快速查看psql 表明所有Kerberos 支持都是通过libpq 处理的,所以psql 不必关心;您的应用程序也应该如此。

    如果您的系统设置了 Kerberos 身份验证并且有票证,您只需在 libpq 连接字符串中设置 krbsrvname。见the libpq parameters。在 Windows 上,如果您想使用 MIT Kerberos 而不是 SSPI,您可能还需要将 gsslib 设置为 gssapi

    【讨论】:

    • Thnx,是的,我想使用 MIT Kerberos。你能说:在这种情况下我应该使用什么主要格式?他们写的一定是这样的 servicename\name@realm?另外,我需要在 conninfo 中使用哪些参数?用户名?密码?
    • 密码对 kerberos 没有意义。如果用户名与用户的系统本地用户名(当然,它必须匹配 kerberos 票证)和服务名称不匹配,您将需要该用户名。其余选项(如任何领域覆盖)由 MIT kerberos 环境变量或krb5.conf(如果需要)设置;见web.mit.edu/kerberos/krb5-devel/doc/admin/env_variables.html
    • 我应该在 PGSQL 中以 servicename\user1@realm 格式创建用户,还是只有 PGSQL 中的用户 'user1'?在 conninfo 我使用'servicename\user1@realm'?对格式有点困惑
    猜你喜欢
    • 2014-01-06
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多