keycloak javascript适配器请求离线令牌

Posted

技术标签:

【中文标题】keycloak javascript适配器请求离线令牌【英文标题】:keycloak javascript adapter request offline token 【发布时间】:2016-05-18 03:45:57 【问题描述】:

我有一个 js 应用程序,我使用带有公共客户端和标准流程的 keycloak 1.7-final javascript 适配器,它工作正常,但现在我想为应用程序添加离线功能,但不知道如何获取离线令牌。根据documentation,客户端可以通过在向Keycloak发送授权请求时添加参数“scope=offline_access”来请求离线令牌。 问题是我不知道在哪里添加参数。我尝试添加到“keycloak.config”和“keycloak.init”,但它不起作用。

在 keycloak.config 中:

keycloak: 
     url: 'link omitted',
     realm: 'sisdn-realm',
     clientId: 'sisdn',
     redirect_uri: 'link omitted',
     flow: 'standard',
     'enable-cors': true,
     scope: 'offline_access'

在 keycloak.init 中

const keycloakConf = require('keycloak')//this is the same config above
var keycloak = new  keycloakConf(config.keycloak)

keycloak.init(
   onLoad: 'login-required',
   checkLoginIframe: false,
   scope: 'offline_access'
)
.success(authenticated => 
   if(!authenticated)
     dispatch(loginFailure())
   else 
     global.keycloak = keycloak
     dispatch(loginSuccess())
    
 )

【问题讨论】:

您必须在授权请求本身中直接添加“scope=offline_access”。你能添加你用来发送请求的代码吗? 这是授权请求本身,您可以从我的编辑中看到这是我用来发出请求的内容 文档引用了一个offline-access-app的例子,你看了吗? 是的,它的 java 应用程序将 scope=offline_access 直接添加到查询参数,但我看不出它对 javascript 适配器有何帮助 我会把这个问题放在 github 存储库中的问题中,但有趣的是存储库中没有问题选项卡 【参考方案1】:

来自JS adapter code:

init 方法不接受 scope 选项,但 login 方法可以。

【讨论】:

你是对的范围选项所以我必须使用 init() 然后在回调中我调用 login 如果用户没有登录,谢谢。 @mhashim 你能发布你的解决方案吗?你怎么能 init() 没有登录,所以你可以请求离线访问?

以上是关于keycloak javascript适配器请求离线令牌的主要内容,如果未能解决你的问题,请参考以下文章

带有令牌的Keycloak javascript适配器初始化不起作用?

KeyCloak - Javascript 和 Spring 启动应用程序

如何通过 Java/Kotlin API 从 KeyCloak 请求 JWT 令牌

Keycloak 无限重定向

Spring Keycloak Adapter 为每个请求加载 Open-ID 配置

使用接收到的访问令牌检索 Keycloak 用户数据