@@ -17,6 +17,7 @@ import com.intellij.ui.dsl.builder.Align
1717import com.intellij.ui.dsl.builder.panel
1818import com.intellij.ui.jcef.JBCefJSQuery
1919import org.cef.CefApp
20+ import software.amazon.awssdk.services.ssooidc.model.SsoOidcException
2021import software.aws.toolkits.core.utils.error
2122import software.aws.toolkits.core.utils.getLogger
2223import software.aws.toolkits.core.utils.warn
@@ -27,6 +28,8 @@ import software.aws.toolkits.jetbrains.core.credentials.actions.SsoLogoutAction
2728import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
2829import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
2930import software.aws.toolkits.jetbrains.core.credentials.sono.isSono
31+ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
32+ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
3033import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider
3134import software.aws.toolkits.jetbrains.core.webview.BrowserMessage
3235import software.aws.toolkits.jetbrains.core.webview.BrowserState
@@ -243,12 +246,27 @@ class QWebviewBrowser(val project: Project, private val parentDisposable: Dispos
243246 writeValueAsString(it)
244247 }
245248
246- // TODO: pass "REAUTH" if connection expires
247- val stage = if (isQExpired(project)) {
248- " REAUTH"
249+ val stage = if (isQExpired(project)) {
250+ try {
251+ val conn = ToolkitConnectionManager .getInstance(project).activeConnectionForFeature(QConnection .getInstance()) as ? AwsBearerTokenConnection
252+ val provider = conn?.getConnectionSettings()?.tokenProvider
253+ val p = provider?.delegate as ? BearerTokenProvider
254+ p?.resolveToken()
255+ provider?.id?.let { BearerTokenProviderListener .notifyCredUpdate(it) }
256+ return
257+ } catch (e: SsoOidcException ) {
258+ " REAUTH"
259+ }
260+
249261 } else {
250262 " START"
251263 }
264+ // TODO: pass "REAUTH" if connection expires
265+ // val stage = if (isQExpired(project)) {
266+ // "REAUTH"
267+ // } else {
268+ // "START"
269+ // }
252270
253271 val jsonData = """
254272 {
0 commit comments