首页 > 解决方案 > Okta OktaSignIn 小部件令牌刷新

问题描述

我有一个网站可以使用 Okta 进行身份验证/授权。我可以使用 Okta 登录小部件来获取访问令牌并进行 API 调用。

let oktaSignIn = new OktaSignIn({
      baseUrl: 'https://dev-xyz.okta.com',
      logo: '../img/hello.png',
      clientId: '0oa11nSOMETEXTudr5d7',  
      redirectUri: 'http://localhost:5000/login/callback', // Not sure if it's needed
  
      authParams: {
          issuer: 'https://dev-xyz.okta.com/oauth2/default',
          responseType: ['id_token', 'token'],
          //scopes: ['openid', 'offline_access', 'email', 'profile'],
          scopes: ['openid', 'offline_access'],
      }
  });

  this.oktaSignIn.renderEl({
      el: '#widget-container'
  }, function success(res) {
      if (res.status === 'SUCCESS') {

        let tokens = res.tokens;

        // Store access token and use it to make API call hosted at http://localhost:5000/myapi
      }
  }

令牌将在 60 分钟后过期。我不确定如何将刷新令牌与 OktaSignIn 小部件一起使用。我找不到任何样品。

我看了这些链接:

https://developer.okta.com/code/javascript/okta_sign-in_widget/#sign-in-and-display-user-s-email https://www.npmjs.com/package/@okta/okta-signin -widget/v/4.5.0 https://github.com/okta/okta-signin-widget

但是,我找不到任何样品。

问题:

  1. 是否可以使用 OktaSignIn 获取刷新令牌?
  2. 如何在 OktaSignIn 中使用刷新令牌?

标签: okta-apiokta-signin-widget

解决方案


如果您使用 tokenManager,它将为您处理刷新令牌

signIn.renderEl({ el: '#widget-container' }, async (res) => {
        if (res.status === 'SUCCESS') {
          signIn.tokenManager.add('id_token', res[0])
          signIn.tokenManager.add('access_token', res[1])
        }
      })

现在每次使用

signIn.tokenManager.get('access_token')

保证您拥有有效的未过期令牌


推荐阅读