如何使用 SPA 或 Web 应用程序在 Okta 中获取 refresh_token
How to get refresh_token in Okta using SPA or web app
我将 okta-auth-js 与 SPA 一起使用,我想检索刷新令牌。
我的配置如下:
okta: {
issuer: 'https://myIssuer/oauth2/default',
clientId: '0oahHMKdu3BlV0x1hdoa7lV0',
redirectUri: 'http://localhost:3000/login/callback',
responseType: 'code'
}
然后我这样执行身份验证:
oktaAuth.signInWithCredentials({
username,
password
}).then((transaction) => {
switch (transaction.status) {
case 'SUCCESS': {
const { sessionToken } = transaction;
oktaAuth.token.getWithRedirect({ sessionToken });
break;
};
... // Other status cases
我在 Okta 仪表板中启用了刷新令牌轮换,但我只收到 access_token 和 id_token 作为响应。
我的问题是如何获得 refresh_token?
您需要在范围中包含 offline_access
我找到了解决办法:)
您必须在调用 /authorize
时使用会话令牌添加 offline_access
范围。
例如:
oktaAuth.signInWithCredentials({
username,
password
}).then((transaction) => {
switch (transaction.status) {
case 'SUCCESS': {
const { sessionToken } = transaction;
oktaAuth.token.getWithRedirect({
sessionToken,
scopes: ['openid', 'offline_access']
});
break;
}
... // Other status cases
我将 okta-auth-js 与 SPA 一起使用,我想检索刷新令牌。
我的配置如下:
okta: {
issuer: 'https://myIssuer/oauth2/default',
clientId: '0oahHMKdu3BlV0x1hdoa7lV0',
redirectUri: 'http://localhost:3000/login/callback',
responseType: 'code'
}
然后我这样执行身份验证:
oktaAuth.signInWithCredentials({
username,
password
}).then((transaction) => {
switch (transaction.status) {
case 'SUCCESS': {
const { sessionToken } = transaction;
oktaAuth.token.getWithRedirect({ sessionToken });
break;
};
... // Other status cases
我在 Okta 仪表板中启用了刷新令牌轮换,但我只收到 access_token 和 id_token 作为响应。
我的问题是如何获得 refresh_token?
您需要在范围中包含 offline_access
我找到了解决办法:)
您必须在调用 /authorize
时使用会话令牌添加 offline_access
范围。
例如:
oktaAuth.signInWithCredentials({
username,
password
}).then((transaction) => {
switch (transaction.status) {
case 'SUCCESS': {
const { sessionToken } = transaction;
oktaAuth.token.getWithRedirect({
sessionToken,
scopes: ['openid', 'offline_access']
});
break;
}
... // Other status cases