8.4.4. 凭证委托


Kerberos 支持凭据委派。应用程序可能需要访问 Kerberos ticket,以便可以重新使用它与 Kerberos 保护的其他服务交互。因为 Red Hat Single Sign-On 服务器处理 SPNEGO 协议,所以您必须将 GSS 凭证传播到 OpenID Connect 令牌声明或 SAML 断言属性中的应用程序。Red Hat Single Sign-On 从 Red Hat Single Sign-On 服务器将其传输到您的应用程序。要将此声明插入到令牌或断言中,每个应用程序都必须启用内置协议映射程序 gss delegation 凭据。此 映射程序 位于应用程序客户端页面的"映射程序"选项卡中。如需了解更多详细信息,请参阅 协议映射程序 章节。

应用程序必须反序列化它从 Red Hat Single Sign-On 接收的声明,然后才能向其他服务发出 GSS 调用。当您将凭证从访问令牌映射到 GSSCredential 对象时,使用传递给 GSSManager.createContext 方法创建 GSSContext。例如:

// Obtain accessToken in your application.
KeycloakPrincipal keycloakPrincipal = (KeycloakPrincipal) servletReq.getUserPrincipal();
AccessToken accessToken = keycloakPrincipal.getKeycloakSecurityContext().getToken();

// Retrieve Kerberos credential from accessToken and deserialize it
String serializedGssCredential = (String) accessToken.getOtherClaims().
    get(org.keycloak.common.constants.KerberosConstants.GSS_DELEGATION_CREDENTIAL);

GSSCredential deserializedGssCredential = org.keycloak.common.util.KerberosSerializationUtils.
    deserializeCredential(serializedGssCredential);

// Create GSSContext to call other Kerberos-secured services
GSSContext context = gssManager.createContext(serviceName, krb5Oid,
    deserializedGssCredential, GSSContext.DEFAULT_LIFETIME);
Copy to Clipboard Toggle word wrap
注意

krb5.conf 文件中配置转发的 Kerberos 票据,并在浏览器中添加对授权凭证的支持。

警告

委派具有安全隐患,因此仅在需要且仅在 HTTPS 中使用它。有关更多详细信息和示例,请参阅 本文

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat