Skip to content

Commit 404329f

Browse files
authored
Emit metric on OAuth callback failure (#5060)
1 parent c65f2b8 commit 404329f

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/sso/pkce/ToolkitOAuthService.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.PKCEAuthorizationGra
3232
import software.aws.toolkits.jetbrains.core.credentials.sso.PKCEClientRegistration
3333
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.buildUnmanagedSsoOidcClient
3434
import software.aws.toolkits.resources.AwsCoreBundle
35+
import software.aws.toolkits.telemetry.AuthType
36+
import software.aws.toolkits.telemetry.AwsTelemetry
37+
import software.aws.toolkits.telemetry.MetricResult
3538
import java.math.BigInteger
3639
import java.time.Instant
3740
import java.util.Base64
@@ -189,13 +192,23 @@ internal class ToolkitOAuthCallbackHandler : OAuthCallbackHandlerBase() {
189192
"scopes" to ApplicationNamesInfo.getInstance().fullProductName
190193
)
191194
} else {
192-
val (error, errorDescription) = (oAuthResult.request as? ToolkitOAuthRequest)?.error ?: OAuthError(null, null)
195+
val toolkitRequest = (oAuthResult.request as? ToolkitOAuthRequest)
196+
val (error, errorDescription) = toolkitRequest?.error ?: OAuthError(null, null)
193197
val errorString = if (error != null && errorDescription != null) {
194198
"$error: $errorDescription"
195199
} else {
196200
errorDescription ?: error ?: AwsCoreBundle.message("general.unknown_error")
197201
}
198202

203+
AwsTelemetry.loginWithBrowser(
204+
project = null,
205+
credentialStartUrl = toolkitRequest?.registration?.issuerUrl,
206+
result = MetricResult.Failed,
207+
reason = error,
208+
reasonDesc = errorDescription,
209+
authType = AuthType.PKCE
210+
)
211+
199212
mapOf(
200213
"error" to errorString
201214
)

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/webview/LoginBrowser.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded
3636
import software.aws.toolkits.jetbrains.core.credentials.sono.CODECATALYST_SCOPES
3737
import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROLE_ACCESS_SCOPE
3838
import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
39+
import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION
3940
import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL
4041
import software.aws.toolkits.jetbrains.core.credentials.sso.PendingAuthorization
4142
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.InteractiveBearerTokenProvider
@@ -197,7 +198,7 @@ abstract class LoginBrowser(
197198
reason = e.message,
198199
credentialSourceId = CredentialSourceId.AwsId,
199200
isReAuth = isReauth,
200-
authType = getAuthType()
201+
authType = getAuthType(SONO_REGION)
201202
)
202203
AuthTelemetry.addConnection(
203204
result = Result.Failed,
@@ -217,7 +218,7 @@ abstract class LoginBrowser(
217218
result = Result.Succeeded,
218219
credentialSourceId = CredentialSourceId.AwsId,
219220
isReAuth = isReauth,
220-
authType = getAuthType()
221+
authType = getAuthType(SONO_REGION)
221222
)
222223
AuthTelemetry.addConnection(
223224
result = Result.Succeeded,

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/webview/WebviewTelemetryUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
99
import software.aws.toolkits.telemetry.AuthType
1010
import software.aws.toolkits.telemetry.FeatureId
1111

12-
fun getAuthType(region: String = "us-east-1"): AuthType {
12+
fun getAuthType(region: String): AuthType {
1313
val isCommercialRegion = !region.startsWith("us-gov") && !region.startsWith("us-iso") && !region.startsWith("cn")
1414
if (!Registry.`is`("aws.dev.useDAG") && isCommercialRegion) {
1515
return AuthType.PKCE

0 commit comments

Comments
 (0)