2.2.2. 隐式和混合流


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

在这个版本中,Red Hat Single Sign-On 服务器会将授权代码(而非身份验证令牌)返回给应用。JavaScript 适配器会交换访问令牌 的代码,并在浏览器重新重定向到应用程序后刷新令牌。

Red Hat Single Sign-On 还支持 Implicit 流,其中使用 Red Hat Single Sign-On 成功身份验证后会立即发送访问令牌。这的性能可能比标准流更高,因为没有额外的请求来交换令牌代码,但在访问令牌过期时可能会产生影响。

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

要启用隐式流,您需要在 Red Hat Single Sign-On Admin 控制台中为客户端启用 Implicit Flow Enabled 标志。您还需要传递参数 ,并将值 隐式 传递给 init 方法:

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

需要注意的是,只提供了访问令牌,也没有刷新令牌。这意味着,访问令牌已过期后,应用程序必须重新指向 Red Hat Single Sign-On 来获取新的访问令牌。

红帽单点登录还支持 混合 流。

这要求客户端在管理控制台中启用 Standard Flow EnabledImplicit Flow Enabled 标志。然后,Red Hat Single Sign-On 服务器会将代码和令牌发送到您的应用。访问令牌可以立即使用,而代码可以被交换来执行访问和刷新令牌。与隐式流类似,混合流非常适合性能,因为访问令牌会立即可用。但是,该令牌仍然在 URL 中发送,前面提到的安全漏洞可能仍会应用。

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

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat