@@ -36,6 +36,8 @@ import { AuthenticationFlow } from './model'
3636import { toSnakeCase } from '../../shared/utilities/textUtilities'
3737import { getUserAgent , withTelemetryContext } from '../../shared/telemetry/util'
3838import { oneSecond } from '../../shared/datetime'
39+ import { telemetry } from '../../shared/telemetry/telemetry'
40+ import { getTelemetryReason , getTelemetryReasonDesc , getHttpStatusCode } from '../../shared/errors'
3941
4042export class OidcClient {
4143 public constructor (
@@ -86,15 +88,40 @@ export class OidcClient {
8688 }
8789
8890 public async createToken ( request : CreateTokenRequest ) {
91+ const startTime = this . clock . Date . now ( )
92+ const grantType = request . grantType
93+
8994 let response
9095 try {
9196 response = await this . client . createToken ( request as CreateTokenRequest )
9297 } catch ( err ) {
98+ const statusCode = getHttpStatusCode ( err )
99+ telemetry . auth_ssoTokenOperation . emit ( {
100+ result : 'Failed' ,
101+ grantType : grantType ?? 'unknown' ,
102+ duration : this . clock . Date . now ( ) - startTime ,
103+ reason : getTelemetryReason ( err ) ,
104+ reasonDesc : getTelemetryReasonDesc ( err ) ,
105+ ...( statusCode !== undefined ? { httpStatusCode : String ( statusCode ) } : { } ) ,
106+ } )
107+
108+ getLogger ( ) . error ( `sso-oidc: createToken failed (grantType=${ grantType } ): ${ err } ` )
109+
93110 const newError = AwsClientResponseError . instanceIf ( err )
94111 throw newError
95112 }
96113 assertHasProps ( response , 'accessToken' , 'expiresIn' )
97114
115+ telemetry . auth_ssoTokenOperation . emit ( {
116+ result : 'Succeeded' ,
117+ grantType : grantType ?? 'unknown' ,
118+ duration : this . clock . Date . now ( ) - startTime ,
119+ } )
120+
121+ getLogger ( ) . debug (
122+ `sso-oidc: createToken succeeded (grantType=${ grantType } , requestId=${ response . $metadata . requestId } )`
123+ )
124+
98125 return {
99126 ...selectFrom ( response , 'accessToken' , 'refreshToken' , 'tokenType' ) ,
100127 requestId : response . $metadata . requestId ,
0 commit comments