3.9. API 参考
3.9.1. Constructor 复制链接链接已复制到粘贴板!
构造适配器的建议方法是直接传递配置:
new Keycloak({ url: "http://keycloak-server", realm: "my-realm", clientId: "my-app" });
new Keycloak({
url: "http://keycloak-server",
realm: "my-realm",
clientId: "my-app"
});
另外,也可以将 URL 传递给包含配置的 JSON 文件:
new Keycloak("http://your-app/adapter-config.json");
new Keycloak("http://your-app/adapter-config.json");
JSON 配置文件必须包括以下字段:
{ "auth-server-url": "https://auth.example.com", "realm": "my-realm", "resource": "my-app" }
{
"auth-server-url": "https://auth.example.com",
"realm": "my-realm",
"resource": "my-app"
}
请注意,使用 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-required
或check-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 服务器。有效值为
query
或fragment
。默认值为片段
,这意味着在成功身份验证后,红帽构建 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 (如果适用)的参数。选择
hidden
和location
不受这些参数的影响。所有可用选项都在 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 配置文件。
返回使用配置集解析的承诺。
例如:
isTokenExpired(minValidity)
如果令牌在过期前保留的时间少于 minValidity 秒,则返回 true (如果未指定 0,则返回有效)。
updateToken(minValidity)
如果令牌在 minValidity 秒内过期(如果未指定 5,则使用 minValidity 是可选的),则会刷新令牌。如果 -1 作为 minValidity 传递,则会强制刷新令牌。如果启用了会话状态,也会检查会话状态。
返回带有布尔值解析的承诺,指示令牌是否已刷新。
例如:
clearToken()
清除身份验证状态,包括令牌。如果应用程序检测到会话已过期,例如更新令牌失败,这很有用。
调用此操作会导致调用AuthLogout 回调监听程序。
3.9.4. 回调事件 复制链接链接已复制到粘贴板!
适配器支持为特定事件设置回调监听程序。请记住,必须在调用 init ()
方法前设置它们。
例如:
keycloak.onAuthSuccess = () => console.log('Authenticated!');
keycloak.onAuthSuccess = () => console.log('Authenticated!');
可用的事件有:
- 当适配器 初始化时,在Ready (authenticated) - 调用。
- 当用户被成功验证时,在AuthSuccess - 调用。
- 如果身份验证过程中出现错误,则 onAuthError - Called。
- 当令牌被刷新时,在 AuthRefreshSuccess- Called 上 调用。
- 如果在尝试刷新令牌时出现错误,则 onAuthRefreshError - Called。
- 当用户注销时(仅在启用会话状态 iframe 或 Cordova 模式时,才会调用 AuthLogout - Called)。
- 当访问令牌过期时,onTokenExpired - Called。如果刷新令牌可用,可以通过 updateToken 刷新令牌,或者在没有(带有隐式流)的情况下,您可以重定向到登录屏幕来获取新的访问令牌。