3.9. API 参考


3.9.1. Constructor

构造适配器的建议方法是直接传递配置:

new Keycloak({
    url: "http://keycloak-server",
    realm: "my-realm",
    clientId: "my-app"
});
Copy to Clipboard Toggle word wrap

另外,也可以将 URL 传递给包含配置的 JSON 文件:

new Keycloak("http://your-app/adapter-config.json");
Copy to Clipboard Toggle word wrap

JSON 配置文件必须包括以下字段:

{
    "auth-server-url": "https://auth.example.com",
    "realm": "my-realm",
    "resource": "my-app"
}
Copy to Clipboard Toggle word wrap

请注意,使用 JSON 配置文件将在初始化前触发额外的请求,因此不建议提高性能。

3.9.2. Properties

authenticated
如果用户通过身份验证,则为 true,否则为 false
token
可以在请求中的 Authorization 标头中向服务发送 base64 编码令牌。
tokenParsed
解析的令牌作为一个 JavaScript 对象。
subject
用户 ID。
idToken
base64 编码的 ID 令牌。
idTokenParsed
解析的 id 令牌作为 JavaScript 对象。
realmAccess
与令牌关联的 realm 角色。
resourceAccess
与令牌关联的资源角色。
refreshToken
可用于检索新令牌的 base64 编码刷新令牌。
refreshTokenParsed
解析的刷新令牌作为 JavaScript 对象。
timeSkew
浏览器时间和Keycloak 服务器构建之间的预计时间差(以秒为单位)。这个值只是一个估算,但在确定令牌是否过期时足够准确。
responseMode
在 init 中传递的响应模式(默认值为片段)。
在 init 中传递的流程。
adapter

允许您覆盖重定向和其他浏览器相关功能的方式由该库处理。可用选项:

  • "default" - 库使用浏览器 api 进行重定向(这是默认设置)
  • "Cordova" - 库会尝试使用 InAppBrowser cordova 插件加载 keycloak 登录/注册页面(当库在 cordova 生态系统中工作时会自动使用)
  • "Cordova-native" - 库尝试使用 BrowserTabs cordova 插件,使用手机的系统浏览器打开登录和注册页面。这需要额外的设置才能重新重定向到应用程序(请参阅 第 3.6 节 “带有 Cordova 的混合应用程序”)。
  • "custom" - 允许您实施自定义适配器(仅适用于高级用例)
responseType
发送到带有登录请求的红帽构建的 Keycloak 的响应类型。这根据初始化过程中使用的流值决定,但可通过设置此值来覆盖。

3.9.3. Methods

init (options)

调用用于初始化适配器。

选项是一个对象,其中:

  • useNonce - 添加一个加密,以验证身份验证响应是否与请求匹配(默认为 true)。
  • onLoad - 指定要在负载时执行的操作。支持的值有 login-requiredcheck-sso
  • redirecturi - 指定在登录或注销后重定向到的默认 uri。目前,这个适配器 'cordova-native' 和 'default' 支持。
  • silentCheckSsoRedirectUri - 如果 onLoad 设为 'check-sso',则为 silent 身份验证检查设置重定向 uri。
  • silentCheckSsoFallback - 当浏览器不支持 静默 check-sso 时(默认为 true),启用回到普通的 check-sso
  • token - 为令牌设置初始值。
  • refreshToken - 为刷新令牌设置初始值。
  • idToken - 为 id 令牌设置初始值(仅与 token 或 refreshToken 一同使用)。
  • Scope - 将默认 scope 参数设置为红帽构建的 Keycloak 登录端点。使用以空格分隔的范围列表。它们通常引用 特定客户端中定义的客户端范围。请注意,范围 openid 始终将添加到适配器的范围列表中。例如,如果您输入范围选项 地址电话,则红帽构建的 Keycloak 的请求将包含 scope 参数 scope=openid 地址电话。请注意,如果 login () 选项明确指定范围,则此处指定的默认范围会被覆盖。
  • timeSkew - 以秒为单位为本地时间和红帽构建 Keycloak 服务器设置 skew 的初始值(仅与令牌或 refreshToken 一起)。
  • checkLoginIframe - 设置为启用/禁用监控登录状态(默认为 true)。
  • checkLoginIframeInterval - 设置检查登录状态的时间间隔(默认为 5 秒)。
  • responseMode - 在登录请求时将 OpenID Connect 响应模式发送到红帽构建的 Keycloak 服务器。有效值为 queryfragment。默认值为 片段,这意味着在成功身份验证后,红帽构建 Keycloak 会重定向到 URL 片段中添加 OpenID Connect 参数的 JavaScript 应用程序。这通常更安全,建议使用它而不是 query
  • 流 - 设置 OpenID Connect 流。有效值为 标准隐式 或混合
  • enableLogging - 启用来自 Keycloak 到控制台的日志记录消息(默认为 false)。
  • pkceMethod - 要使用的概念验证(PKCE)。配置这个值可启用 PKCE 机制。可用选项:

    • "S256" - 基于 SHA256 的 PKCE 方法(默认)
    • false - PKCE 被禁用。
  • messageReceiveTimeout - 以毫秒为单位设置等待 Keycloak 服务器消息响应的超时。这用于,例如,在第三方 Cookie 检查期间等待消息。默认值为 10000。
  • locale - 当Load 为 'login-required' 时,请在 OIDC 1.0 规格的 3.1.2.1 部分中设置 'ui_locales' 查询参数。

返回初始化完成后解析的承诺。

login (options)

重定向到登录表单,返回 Promise。

options 是一个可选对象,其中:

  • redirecturi - 指定在登录后要重定向到的 uri。
  • prompt - 这个参数允许在红帽构建的 Keycloak 服务器端自定义登录流。例如,如果值为 login,则强制显示登录屏幕。当客户端具有 Consent required 时,或强制显示对值同意 的同意 屏幕。最后,可以使用值 none 来确保用户未显示登录屏幕,这对在用户已通过身份验证后检查 SSO 非常有用(这与上述值 check-sso 相关)。
  • maxAge - 只有用户已通过身份验证时才使用。指定自用户身份验证以来的最长时间。如果用户已经验证了比 maxAge 更长的时间,则忽略 SSO,并且需要再次验证身份。
  • loginHint - 用于预先填充登录表单上的用户名/电子邮件字段。
  • Scope - 使用这个特定登录的不同值覆盖 init 中配置的范围。
  • idpHint - 用于告知红帽构建的 Keycloak,跳过显示登录页面并自动重定向到指定的身份提供程序。身份提供程序文档中的更多信息
  • acr - 包含有关 acr 声明的信息,该声明将在 claim 参数内发送到红帽构建的 Keycloak 服务器。典型的用法用于逐步身份验证。使用 { values: ["silver", "gold"], essential: true }.如需了解更多详细信息,请参阅 OpenID Connect 规格和步骤 身份验证文档
  • acrValues - 生成 acr_values 参数,该参数引用身份验证上下文类,并允许客户端声明所需的保证级别要求,如身份验证机制。请参阅 OpenID Connect MODRNA Authentication Profile 1.0 中的第 4 节:cr_values 请求值和保证级别
  • action - 如果值是 register,用户会被重定向到注册页面。如需了解更多详细信息 ,请参阅客户端请求的注册部分。如果值为 UPDATE_PASSWORD 或另一个支持的所需操作,则用户将重定向到重置密码页面或其他必要的操作页面。但是,如果用户未通过身份验证,则用户将发送到登录页面并在身份验证后重定向。如需了解更多详细信息,请参阅应用程序初始操作部分
  • locale - 在 OIDC 1.0 规格的 3.1.2.1 部分中符合部分 3.1.2.1 设置 'ui_locales' 查询参数。
  • cordovaOptions - 指定传递给 Cordova in-app-browser (如果适用)的参数。选择 hiddenlocation 不受这些参数的影响。所有可用选项都在 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/ 中定义。用法示例 :{ zoom: "no", hardwareback: "yes" };

createLoginUrl(options)

返回包含 URL 的 Promise,以登录表单。

选项是一个可选对象,它支持与功能 登录 相同的选项。

logout (options)

重定向至注销。

选项是一个对象,其中:

  • redirecturi - 指定在注销后要重定向到的 uri。

createLogoutUrl(options)

返回 URL 以注销用户。

选项是一个对象,其中:

  • redirecturi - 指定在注销后要重定向到的 uri。

register (options)

重定向至注册表单。带有选项操作登录的快捷方式 = 'register'

选项与登录方法相同,但 'action' 设置为 'register'

createRegisterUrl(options)

返回包含 url 的 Promise 进行注册页面。带有选项操作的 createLoginUrl 的快捷方式 = 'register'

对于 createLoginUrl 方法,选项与 createLoginUrl 方法相同,但 'action' 设置为 'register'

accountManagement()

重定向到帐户控制台。

createAccountUrl(options)

将 URL 返回到帐户控制台。

选项是一个对象,其中:

  • redirecturi - 指定在重定向到应用程序时要重定向到的 uri。

hasRealmRole(role)

如果令牌具有给定的 realm 角色,则返回 true。

hasResourceRole (role, resource)

如果令牌具有资源的给定角色(如果未指定 clientId,则使用资源是可选的),则返回 true。

loadUserProfile()

加载 users 配置文件。

返回使用配置集解析的承诺。

例如:

try {
    const profile = await keycloak.loadUserProfile();
    console.log('Retrieved user profile:', profile);
} catch (error) {
    console.error('Failed to load user profile:', error);
}
Copy to Clipboard Toggle word wrap

isTokenExpired(minValidity)

如果令牌在过期前保留的时间少于 minValidity 秒,则返回 true (如果未指定 0,则返回有效)。

updateToken(minValidity)

如果令牌在 minValidity 秒内过期(如果未指定 5,则使用 minValidity 是可选的),则会刷新令牌。如果 -1 作为 minValidity 传递,则会强制刷新令牌。如果启用了会话状态,也会检查会话状态。

返回带有布尔值解析的承诺,指示令牌是否已刷新。

例如:

try {
    const refreshed = await keycloak.updateToken(5);
    console.log(refreshed ? 'Token was refreshed' : 'Token is still valid');
} catch (error) {
    console.error('Failed to refresh the token:', error);
}
Copy to Clipboard Toggle word wrap

clearToken()

清除身份验证状态,包括令牌。如果应用程序检测到会话已过期,例如更新令牌失败,这很有用。

调用此操作会导致调用AuthLogout 回调监听程序。

3.9.4. 回调事件

适配器支持为特定事件设置回调监听程序。请记住,必须在调用 init () 方法前设置它们。

例如:

keycloak.onAuthSuccess = () => console.log('Authenticated!');
Copy to Clipboard Toggle word wrap

可用的事件有:

  • 当适配器 初始化时,在Ready (authenticated) - 调用。
  • 当用户被成功验证时,在AuthSuccess - 调用。
  • 如果身份验证过程中出现错误,则 onAuthError - Called。
  • 当令牌被刷新时,在 AuthRefreshSuccess- Called 上 调用。
  • 如果在尝试刷新令牌时出现错误,则 onAuthRefreshError - Called。
  • 当用户注销时(仅在启用会话状态 iframe 或 Cordova 模式时,才会调用 AuthLogout - Called)。
  • 当访问令牌过期时,onTokenExpired - Called。如果刷新令牌可用,可以通过 updateToken 刷新令牌,或者在没有(带有隐式流)的情况下,您可以重定向到登录屏幕来获取新的访问令牌。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat