3.5. 隐式和混合流程


默认情况下,适配器使用 Authorization Code 流。

在这个版本中,红帽构建的 Keycloak 服务器会向应用程序返回授权代码,而不是身份验证令牌。JavaScript 适配器在浏览器重定向到应用后交换访问令牌的代码和刷新令牌。

红帽构建的 Keycloak 还支持 Implicit 流,在成功通过红帽构建的 Keycloak 进行身份验证后立即发送访问令牌。此流的性能可能比标准流更好,因为不存在额外的请求来交换令牌的代码,但访问令牌过期时有影响。

但是,在 URL 片段中发送访问令牌可能是安全漏洞。例如,令牌可以通过 Web 服务器日志和浏览器历史记录泄漏。

要启用隐式流,您可以在红帽构建的 Keycloak 管理控制台中为客户端启用 Implicit Flow Enabled 标志。您还可以将参数 以及值 隐式 传递给 init 方法:

await keycloak.init({
    flow: 'implicit'
})
Copy to Clipboard Toggle word wrap

请注意,只有访问令牌会被提供,且不存在刷新令牌。这意味着,在访问令牌过期后,应用程序必须再次重定向到红帽构建的 Keycloak 来获取新的访问令牌。

红帽构建的 Keycloak 还支持 混合 流。

此流程要求客户端在 Admin 控制台中同时启用了 Standard FlowImplicit Flow。红帽构建的 Keycloak 服务器随后将代码和令牌都发送到您的应用程序。访问令牌可以立即使用,而代码可以交换来访问和刷新令牌。与隐式流类似,混合流对性能很好,因为访问令牌会立即可用。但是,令牌仍然在 URL 中发送,之前提到的安全漏洞可能仍然适用。

混合流中的一个优点是,应用程序可以使用刷新令牌。

对于混合流,您需要将带有值 hybrid 的参数 传递给 init 方法:

await keycloak.init({
    flow: 'hybrid'
});
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat