- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现为我的应用程序请求 TGT 的编程逻辑,因此在通过 GSSAPI 和 GSS 对 LDAP 服务器进行身份验证之前,无需从命令行调用 kinit
SPNEGO机制。
我创建一个内存中 ccache,使用用户名和密码请求 TGT,然后使用 gss_krb5_import_cred
导入凭据。在开始身份验证之前,为 LDAP 结构设置 GSSAPI 上下文。
下面的示例代码在 GSSAPI 中运行良好,但是当我尝试将机制更改为 GSS-SPNEGO 时,出现本地 LDAP 错误 (-2),并显示以下消息:
SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (SPNEGO cannot find mechanisms to negotiate)
int create_krb5_cred(krb5_context ctx, char *realm, char *user,
char *password, krb5_ccache *ccache, gss_cred_id_t *gsscred) {
int rc = 0, minor_stat = 0;
int len = 0;
const char *cname = NULL;
krb5_get_init_creds_opt *cred_opt;
krb5_creds creds;
krb5_principal princ = NULL;
if (realm == NULL || user == NULL || password == NULL) return -1;
rc = krb5_cc_new_unique(ctx, "MEMORY", NULL, ccache);
if (rc != 0) goto clear;
len = strlen(realm);
rc = krb5_build_principal(ctx, &princ, len, realm, user, NULL);
if (rc != 0) goto clear;
rc = krb5_cc_initialize(ctx, *ccache, princ);
if (rc != 0) goto clear;
rc = krb5_get_init_creds_opt_alloc(ctx, &cred_opt);
if (rc != 0) goto clear;
rc = krb5_get_init_creds_password(ctx, &creds, princ, password, 0, NULL, 0, NULL, NULL);
if (rc != 0) goto clear;
rc= krb5_cc_store_cred(ctx, *ccache, &creds);
if (rc != 0) goto clear;
cname = krb5_cc_get_name(ctx, *ccache);
if (cname == NULL) goto clear;
rc = gss_krb5_ccache_name(&minor_stat, cname, NULL);
if (rc != 0) goto clear;
rc = gss_krb5_import_cred(&minor_stat, *ccache, princ, 0, gsscred);
clear:
if (princ != NULL) krb5_free_principal(ctx, princ);
return rc;
}
int remove_krb5_cred(krb5_context ctx, krb5_ccache ccache, gss_cred_id_t *gsscred) {
int rc = 0;
rc = gss_release_cred(NULL, gsscred);
if (rc != 0) return rc;
rc = krb5_cc_destroy(ctx, ccache);
krb5_free_context(ctx);
return rc;
}
int main(void) {
int rc = 0;
krb5_context ctx;
krb5_ccache ccache;
gss_cred_id_t gsscred = NULL;
rc = krb5_init_context(&ctx);
create_krb5_cred(ctx, "EXAMPLE.ORG", "testuser", "secret", &ccache, &gsscred);
LDAP *ld = NULL;
const int version = LDAP_VERSION3;
void *defaults = NULL;
ldap_initialize(&ld, "ldap://example.org");
ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version);
/* Setting the credentials and handling the SASL binding with the `interact` function
(with setting the new GSS context) is not disclosed here...*/
rc = ldap_sasl_interactive_bind_s(ld, NULL, "GSSAPI", NULL, NULL, 0, interact, defaults);
printf("Connect 0x%x\n", rc);
remove_krb5_cred(ctx, ccache, &gsscred);
struct berval *authzid;
rc = ldap_whoami_s(ld, &authzid, NULL, NULL);
printf("RC %d %s\n\n", rc, authzid->bv_val);
}
This旧论坛帖子表明未为导入的凭据设置 SPNEGO oid,因此 LDAP 将在身份验证过程中忽略它。
我尝试使用 gss_acquire_cred
函数而不是 gss_krb5_import_cred
,但我没有成功接收 TGT(甚至对于 GSSAPI 也是如此)。
任何有关如何使用 GSSAPI 和 GSS-SPNEGO 成功进行身份验证的想法都将受到欢迎。
更新:我已成功将 gss_acquire_cred
与 GSSAPI 和 GSS-SPNEGO 结合使用,但我必须使用基于文件的凭据缓存,而不是基于内存的凭据缓存。
最佳答案
要实现这一目标,需要采取几项行动:
pluginviewer
ldapsearch
测试您的设置,以确保 Kerberos 实际工作。如果一切顺利,请继续:
gss_acquire_cred_with_password
gssapi_ext.h
.LDAP
句柄,其他方法都不起作用。sizeof
将 gss_cred_t
传递给 berval
结构。不幸的是,OpenLDAP 和 Cyrus SASL 的记录都很糟糕。我怎么知道它会起作用?我阅读了两者的源代码来理解和利用该用例。
首先阅读头文件,您将得到结果。如果您遇到困难,请再次询问。
关于c - 将 GSS-SPNEGO 与 gss_krb5_import_cred 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503916/
由于我的应用程序变大了,我决定应用程序的每个“模块”都有自己的资源文件、样式文件和 GSS 文件。此外,例如按钮的样式将位于不同的全局 GSS 文件中,因为它更像是一种应用程序样式,在整个应用程序中使
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
尝试做一些像这里解释的事情: http://blog.arcbees.com/2015/04/28/managing-your-css-files-with-variables-and-a-theme
我正在尝试解决一个不寻常的问题。我在 Mac 上开发。我正在编写一些使用 jdbc 连接到数据库的代码。我无法直接访问数据库服务器 - 要访问它,我必须在 ssh 上设置端口转发,该端口转发到数据库服
我已经使用GSS-API创建了2个演示Kerberos客户端。 一个在Python3中,第二个在Java中。 这两个客户端似乎大致相同,并且两者都“起作用”,因为我得到了我的Java GSS-API服
我正在使用 jTDS 连接到 SQLServer。 jTDS 在内部使用 GSS 获取 kerberos 的服务票证并建立安全上下文。由于我的应用程序生命周期很长并且我的连接一直保持 Activity
我正在运行以下教程: http://download.oracle.com/javase/6/docs/technotes/guides/security/jgss/tutorials/BasicCl
我正在使用 Kerberos 实现 Windows -> Linux 透明身份验证。在 Windows 端,我使用 SSPI。我成功地在 Windows 客户端和 Windows 服务器之间建立了上下
我有以下问题。 操作系统:CentOS 6.6 PHP:5.5 Curl: 7.43 编译 当我执行“curl -V”时,我得到以下信息: curl 7.43.0 (x86_64-unknown-li
有没有人找到支持 MSSQL 的 GSS-API 的 JDBC 驱动程序。我需要使用 Windows 身份验证连接到 SQL Server。有趣的是,用户是通过 JAAS 登录到应用程序的,而不是应用
我正在尝试使用 Kerberos 连接到数据库,除了两个问题之外一切正常。首先,当我执行代码时,系统会要求我输入两次密码,而不是一次。然后我的查询被发送到我的数据库并返回结果。 上述问题源于我认为的根
我正在尝试运行 java 教程 Secure Authentication Using SPNEGO Java GSS Mechanism 中的示例 GssSpNegoClient.java由于一行,
如何将以下 GWT CSS 部分转换为 GWT GSS? @if (test.mobile.client.Parameter.getWindowWidth() >= 414) { .previewB
我尝试通过 ssh 连接到服务器并收到此错误: “未指定的 GSS 故障。次要代码可能会提供更多信息 没有可用的 Kerberos 凭据” 我不太确定这意味着什么。 (仍然尝试谷歌它) ; ssh -
我正在尝试实现为我的应用程序请求 TGT 的编程逻辑,因此在通过 GSSAPI 和 GSS 对 LDAP 服务器进行身份验证之前,无需从命令行调用 kinit SPNEGO机制。 我创建一个内存中 c
windows-xp 将授权 header 中的 SPNEGO token 发送到我们理解 kerberos 协议(protocol)的服务器。服务器应用程序是使用java提供的gss-api实现的。
使用本指南:http://www.gwtproject.org/articles/gss_migration.html我将所有 CSS 文件都转换为 GSS。我的 2 个 CSS 是通过入口点 HTM
我想制作一个程序来使用 gss-api/kerberos 进行流量授权。到目前为止,我可以联系 SSOS 并获得服务单。如果用户没有 TGT,我将在我的代码中执行类似于 kinit 的操作。 我的代码
我的测试程序运行良好。我可以创建一个客户端和一个服务器并让它们相互运行。我可以设置 KRB5_CONFIG 环境变量并使用本地配置进行测试。 出于某种原因,当我将代码放入我们的生产软件时,它失败了。即
我使用 GSS API 通过 Kerberos 身份验证(gss_init_sec_context 调用)向 SMB 2.0 服务器验证我自己。我知道我可以使用 kinit -R 命令更新 TGT。但
我是一名优秀的程序员,十分优秀!