code: private WebIdentitySessionContext parseWebIdentitySessionContext(SessionContext sessionContext) throws IOException {
          if (jsonParser.nextToken() != JsonToken.START_OBJECT) {
              throw new JsonParseException("Not a WebIdentitySessionContext object", jsonParser.getCurrentLocation());
          }
  
          WebIdentitySessionContext webIdFederationData = new WebIdentitySessionContext();
  
          while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
              String key = jsonParser.getCurrentName();
  
              switch (key) {
              case "attributes":
                  webIdFederationData.add(CloudTrailEventField.attributes.name(), parseAttributes());
                  break;
              case "federatedProvider":
                  webIdFederationData.add(CloudTrailEventField.federatedProvider.name(), jsonParser.nextTextValue());
                  break;
              default:
                  webIdFederationData.add(key, parseDefaultValue(key));
                  break;
              }
          }
  
          return webIdFederationData;
      }
docs: Parses the {@link WebIdentitySessionContext} object.
  
  @param sessionContext {@link SessionContext}
  @return the web identity session context
  @throws IOException