work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/servicecontainer/app/application/configuration/task/CertificateDataExtractorTask.java:42:@PluginLicenseRestriction(moduleAffiliation = "ClientCertificate") work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/base/api/domain/model/event/metadata/StandardEventMetadataItemType.java:5: USER_AGENT_REQUEST_HEADER; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/servicecontainer/app/infrastructure/event/azure/AzureEventHubClientFactory.java:13:import com.azure.identity.ClientCertificateCredentialBuilder; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/servicecontainer/app/infrastructure/event/azure/AzureEventHubClientFactory.java:63: return ((ClientCertificateCredentialBuilder)((ClientCertificateCredentialBuilder)new ClientCertificateCredentialBuilder().tenantId(tenantId)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/servicecontainer/app/infrastructure/event/azure/AzureEventHubClientFactory.java:66: .clientCertificatePassword(password) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:4:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:23:public final class OAuth2ClientCertificateConfig { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:44: public OAuth2ClientCertificate createClientCertificate() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:45: OAuth2ClientCertificate.OAuth2ClientCertificateBuilder builder = OAuth2ClientCertificate.builder().subjectDn(new X500Name(this.subjectDN)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:78: public static OAuth2ClientCertificateConfig.OAuth2ClientCertificateConfigBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:79: return new OAuth2ClientCertificateConfig.OAuth2ClientCertificateConfigBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:83: public OAuth2ClientCertificateConfig(String subjectDN, String issuerDN) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:89: public OAuth2ClientCertificateConfig() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:93: public static class OAuth2ClientCertificateConfigBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:100: OAuth2ClientCertificateConfigBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:104: public OAuth2ClientCertificateConfig.OAuth2ClientCertificateConfigBuilder subjectDN(String subjectDN) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:110: public OAuth2ClientCertificateConfig.OAuth2ClientCertificateConfigBuilder issuerDN(String issuerDN) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:116: public OAuth2ClientCertificateConfig build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:117: return new OAuth2ClientCertificateConfig(this.subjectDN, this.issuerDN); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/configuration/clientauthentication/OAuth2ClientCertificateConfig.java:123: return "OAuth2ClientCertificateConfig.OAuth2ClientCertificateConfigBuilder(subjectDN=" + this.subjectDN + ", issuerDN=" + this.issuerDN + ")"; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:45: return !this.isUserAllowed(header.get()) ? this.invalid() : this.valid(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:61: private boolean isUserAllowed(HttpBasicAuthExtractor.BasicAuthHeader header) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:63: if (SecureComparison.isEqual(allowedUser.getUsername(), header.username().getValue()) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:64: && SecureComparison.isEqual(allowedUser.getPassword(), header.password().getValue())) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:65: this.logger.debug("Authenticating user \"" + header.username() + "\" for token introspection using Basic-Authentication."); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/application/service/introspection/BasicAuthTokenIntrospectionAuthService.java:74: this.logger.debug("Access denied for user \"" + header.username() + "\" for token introspection using Basic-Authentication; username or password wrong."); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/factory/rest/OAuth2AccessTokenValidationServiceModule.java:11:import com.airlock.iam.oauth2.infrastructure.credential.OAuth2TokenBindingClientCertificateCredentialExtractor; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/factory/rest/OAuth2AccessTokenValidationServiceModule.java:36: return new OAuth2TokenBindingClientCertificateCredentialExtractor(request, wafConfig); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:8:import com.airlock.iam.oauth2.domain.model.credential.OAuth2TokenBindingClientCertificateCredential; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:15:public class OAuth2TokenBindingClientCertificateCredentialExtractor implements OAuth2TokenBindingCredentialExtractor { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:16: private static final ELogger LOG = ELoggerFactory.getLogger(OAuth2TokenBindingClientCertificateCredentialExtractor.class); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:20: public OAuth2TokenBindingClientCertificateCredentialExtractor(HttpServletRequest request, Optional wafSettings) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:29: return Optional.ofNullable(CertUtils.extractClientCertificateFromRequest(this.request, airlockEnvCookiePrefix)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/credential/OAuth2TokenBindingClientCertificateCredentialExtractor.java:30: .map(OAuth2TokenBindingClientCertificateCredential::new); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:11:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificateAuthenticationPayload; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:14:import com.airlock.iam.oauth2.domain.service.clientauthentication.certificate.OAuth2ClientCertificateAuthenticationVerifier; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:23:public final class OAuth2ClientMTLSAuthentication implements OAuth2ClientAuthentication { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:27: private final Provider> mTlsClientCert; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:34: Provider> mTlsClientCert work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:39: this.mTlsClientCert = mTlsClientCert; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:48: public OAuth2ClientAuthenticationParser authenticationParser() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:50: (Optional)this.mTlsClientCert.get(), work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:56: public OAuth2ClientAuthenticationVerifier verifier() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:57: return OAuth2ClientCertificateAuthenticationVerifier.builder() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthentication.java:60: .logger(((IntegrationLoggerFactory)this.loggerFactory.get()).create(OAuth2ClientCertificateAuthenticationVerifier.class)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:11:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificateAuthenticationPayload; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:16:public final class OAuth2ClientMTLSAuthenticationParser implements OAuth2ClientAuthenticationParser { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:17: private final Optional mTlsClientCert; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:20: public OAuth2ClientMTLSAuthenticationParser(Optional mTlsClientCert, ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:21: this.mTlsClientCert = mTlsClientCert; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:26: public Optional parse(OAuth2HttpRequest request) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:40: private Optional withCertificate(OAuth2AuthClientId clientId) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:42: .map(cert -> OAuth2ClientCertificateAuthenticationPayload.builder().clientId(clientId).certificate(cert.getX509Certificate().orElseThrow()).build()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:46: if (this.mTlsClientCert.isEmpty()) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:50: ClientTlsCertificate certificate = this.mTlsClientCert.get(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/infrastructure/service/clientauthentication/OAuth2ClientMTLSAuthenticationParser.java:57: return this.mTlsClientCert; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientAuthenticationData.java:15: private final Set certificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientAuthenticationData.java:19: @NonNull OAuth2ClientId clientId, @NonNull Optional clientSecret, @NonNull Set certificates work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientAuthenticationData.java:52: public Set certificates() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:12:public final class OAuth2ClientCertificateAuthenticationPayload implements OAuth2ClientAuthenticationPayload { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:29: public static OAuth2ClientCertificateAuthenticationPayload.OAuth2ClientCertificateAuthenticationPayloadBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:30: return new OAuth2ClientCertificateAuthenticationPayload.OAuth2ClientCertificateAuthenticationPayloadBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:34: private OAuth2ClientCertificateAuthenticationPayload(@NonNull OAuth2AuthClientId clientId, @NonNull X509Certificate certificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:52: } else if (!(o instanceof OAuth2ClientCertificateAuthenticationPayload other)) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:85: public static class OAuth2ClientCertificateAuthenticationPayloadBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:92: OAuth2ClientCertificateAuthenticationPayloadBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:96: public OAuth2ClientCertificateAuthenticationPayload.OAuth2ClientCertificateAuthenticationPayloadBuilder clientId(@NonNull OAuth2AuthClientId clientId) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:106: public OAuth2ClientCertificateAuthenticationPayload.OAuth2ClientCertificateAuthenticationPayloadBuilder certificate(@NonNull X509Certificate certificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:116: public OAuth2ClientCertificateAuthenticationPayload build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:117: return new OAuth2ClientCertificateAuthenticationPayload(this.clientId, this.certificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificateAuthenticationPayload.java:123: return "OAuth2ClientCertificateAuthenticationPayload.OAuth2ClientCertificateAuthenticationPayloadBuilder(clientId=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:16:public final class OAuth2ClientCertificate { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:22: private OAuth2ClientCertificate(@Nonnull X500Name subjectDn, @Nullable X500Name issuerDn, @Nullable ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:25: this.defaultLogger = Optional.ofNullable(logger).orElse(ELoggerFactory.getLogger(OAuth2ClientCertificate.class)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:29: public OAuth2ClientCertificate(X509Certificate certificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:32: this.defaultLogger = ELoggerFactory.getLogger(OAuth2ClientCertificate.class); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:45: public boolean matches(OAuth2ClientCertificate other) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:85: public static OAuth2ClientCertificate.OAuth2ClientCertificateBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:86: return new OAuth2ClientCertificate.OAuth2ClientCertificateBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:90: public static class OAuth2ClientCertificateBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:99: OAuth2ClientCertificateBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:103: public OAuth2ClientCertificate.OAuth2ClientCertificateBuilder subjectDn(@Nonnull X500Name subjectDn) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:113: public OAuth2ClientCertificate.OAuth2ClientCertificateBuilder issuerDn(@Nullable X500Name issuerDn) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:119: public OAuth2ClientCertificate.OAuth2ClientCertificateBuilder logger(@Nullable ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:125: public OAuth2ClientCertificate build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:126: return new OAuth2ClientCertificate(this.subjectDn, this.issuerDn, this.logger); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/OAuth2ClientCertificate.java:132: return "OAuth2ClientCertificate.OAuth2ClientCertificateBuilder(subjectDn=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/clientauthentication/DefaultOAuth2AuthenticationVerifierSource.java:21: client.clientId(), client.clientSecret().map(OAuth2ClientSecret::getSecret), client.clientCertificates() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/credential/OAuth2TokenBindingClientCertificateCredential.java:6:public final class OAuth2TokenBindingClientCertificateCredential implements OAuth2TokenBindingCredential { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/credential/OAuth2TokenBindingClientCertificateCredential.java:10: public OAuth2TokenBindingClientCertificateCredential(X509Certificate certificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/credential/OAuth2TokenBindingClientCertificateCredential.java:24: } else if (!(o instanceof OAuth2TokenBindingClientCertificateCredential other)) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/credential/OAuth2TokenBindingClientCertificateCredential.java:45: return "OAuth2TokenBindingClientCertificateCredential(certificate=" + this.getCertificate() + ")"; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2Client.java:14:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2Client.java:25: Set clientCertificates(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:15:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:27: private final Set clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:43: @NonNull Set clientCertificates, work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:73: if (clientCertificates == null) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:74: throw new NullPointerException("clientCertificates is marked non-null but is null"); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:114: this.clientCertificates = clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:172: public Set clientCertificates() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:173: return this.clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:236: private Set clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:309: public OAuth2ClientImpl.OAuth2ClientImplBuilder clientCertificates(@NonNull Set clientCertificates) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:310: if (clientCertificates == null) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:311: throw new NullPointerException("clientCertificates is marked non-null but is null"); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:314: this.clientCertificates = clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:406: this.clientCertificates, work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:431: + ", clientCertificates=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/OAuth2ClientImpl.java:432: + this.clientCertificates work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/communication/OAuth2ClientResourceRequestLogic.java:67: this.secretProcessor.putAccessTokenInRequestData(accessToken, params, headers); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/client/communication/OAuth2ClientCommunicatorImpl.java:130: this.tokenRequestClientSecretProcessor.get().putClientSecretInRequestData(tokenEndpointUri, params, headers, this.settings.clientCredentials()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeRequestMetadataFactory.java:4:import com.airlock.iam.common.domain.model.request.UserAgentRequestHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeRequestMetadataFactory.java:27: .userAgentHeader(this.userAgent().orElse(null)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeRequestMetadataFactory.java:32: private Optional userAgent() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeRequestMetadataFactory.java:37: .map(UserAgentRequestHeader::userAgent); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:3:import com.airlock.iam.common.api.domain.model.certificate.ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:8:public enum OAuth2ClientCertificateBindingConfirmationMethod { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:9: SHA_256("S256", ClientCertificate.FingerprintAlgorithm.SHA_256); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:13: private final ClientCertificate.FingerprintAlgorithm algorithm; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:15: public static Optional method(String method) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:24: OAuth2ClientCertificateBindingConfirmationMethod(final String method, final ClientCertificate.FingerprintAlgorithm algorithm) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/OAuth2ClientCertificateBindingConfirmationMethod.java:30: public ClientCertificate.FingerprintAlgorithm getAlgorithm() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:10:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificateAuthenticationPayload; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:38: Optional certificate = clientCertificateFromAuthentication(authentication); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:66: private static Optional clientCertificateFromAuthentication(OAuth2ClientAuthentication authentication) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:68: .filter(OAuth2ClientCertificateAuthenticationPayload.class::isInstance) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:69: .map(OAuth2ClientCertificateAuthenticationPayload.class::cast) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/model/token/scope/OAuth2GrantedScopeStetPsd2FilterProcessor.java:70: .map(OAuth2ClientCertificateAuthenticationPayload::certificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/OAuth2BasicAuthHeaderUtils.java:41: ProvidedUsername.providedUsernameOf(urlDecodeValue(encodedHeader.username().getValue(), charset)), work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenDecoderConfig.java:19:import com.airlock.iam.oauth2.infrastructure.credential.OAuth2TokenBindingClientCertificateCredentialExtractor; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenDecoderConfig.java:65: OAuth2TokenBindingClientCertificateCredentialExtractor certificateCredentialExtractor = new OAuth2TokenBindingClientCertificateCredentialExtractor( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenOneShotAuthenticator.java:22:import com.airlock.iam.oauth2.domain.model.credential.OAuth2TokenBindingClientCertificateCredential; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenOneShotAuthenticator.java:102: return this.bindingVerifier.verify(binding, Optional.of(new OAuth2TokenBindingClientCertificateCredential(certificate))); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenAuthenticatorConfig.java:14:import com.airlock.iam.oauth2.domain.service.token.OAuth2ClientCertificateTokenBindingVerifier; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenAuthenticatorConfig.java:94: OAuth2ClientCertificateTokenBindingVerifier.builder() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenAuthenticatorConfig.java:95: .logger(asConfigSpec.getIntegrationLogger(OAuth2ClientCertificateTokenBindingVerifier.class)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/clientsecret/OAuth2BasicAuthClientSecretMethod.java:45: .map(header -> new UserPasswordCredentialImpl(header.username().getValue(), header.password().getValue())); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:6:import com.airlock.iam.common.api.domain.model.certificate.ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:36:import com.airlock.iam.techclient.auth.application.service.certificate.ClientCertTechClientService; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:37:import com.airlock.iam.techclient.auth.domain.model.certificate.ClientCertificateTechClient; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:38:import com.airlock.iam.techclient.auth.domain.model.certificate.LoginClientCertificateTechClientImpl; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:39:import com.airlock.iam.techclient.auth.domain.model.certificate.MutableClientCertificateTechClient; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:40:import com.airlock.iam.techclient.auth.domain.service.repository.cert.ClientCertificateTechClientRepository; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:41:import com.airlock.iam.techclient.auth.infrastructure.repository.certificate.ClientCertificateTechClientRepositoryImpl; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:73: private ClientCertTechClientService service; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:77: ClientCertTechClientService service, work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:97: ClientCertificate clientCertificate = ClientCertificate.of(certificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:98: MutableClientCertificateTechClient client = LoginClientCertificateTechClientImpl.asMutable( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:99: this.load(clientCertificate).orElseGet(() -> this.register(clientCertificate, username)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:105: this.addPossibleNewCertificate(client, clientCertificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:118: private ClientCertificateTechClient register(ClientCertificate clientCertificate, String clientDisplayName) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:120: ClientCertificateTechClient newClient = LoginClientCertificateTechClientImpl.builder() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:123: .clientCertificate(clientCertificate) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:131: + LogUtil.quote(clientCertificate.getFingerprint()) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:138: private void addPossibleNewCertificate(MutableClientCertificateTechClient client, ClientCertificate clientCertificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:139: if (!hasCertificate(client, clientCertificate)) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:140: LOG.info("Adding new certificate " + LogUtil.quote(clientCertificate.getFingerprint()) + " to client " + LogUtil.quote(client.getId()) + "."); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:141: client.addCertificate(clientCertificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:146: private static boolean hasCertificate(ClientCertificateTechClient client, ClientCertificate clientCertificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:147: return client.getClientCertificates().stream().map(ClientCertificate::getFingerprint).anyMatch(clientCertificate.getFingerprint()::equals); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:150: private Optional load(ClientCertificate clientCertificate) throws AuthenticatorException { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:151: Optional client = this.service.findByCertificate(clientCertificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:156: X500Principal subjectX500Principal = clientCertificate.getX509Certificate().getSubjectX500Principal(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:157: Collection clientsWithSameSubject = this.service.findBySubject(new CertificateX500Name(subjectX500Principal)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:162: private void verifyIntegrity(X500Principal subjectX500Principal, Collection clientsWithSameSubject) throws AuthenticatorException { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:200: ClientCertificateTechClientRepository interceptedRepository = new ClientCertificateTechClientRepositoryImpl(this.clientRepository.jooqConfig()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:202: this.service = new ClientCertTechClientService(interceptedRepository, interceptorManager); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:217: public ClientCertTechClientService getService() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:235: private ClientCertTechClientService service; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:254: public NextGenPsd2CertificateAuthenticator.NextGenPsd2CertificateAuthenticatorBuilder service(ClientCertTechClientService service) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:11:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:12:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificateAuthenticationPayload; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:25:public final class OAuth2ClientCertificateAuthenticationVerifier implements OAuth2ClientAuthenticationVerifier { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:31: private OAuth2ClientCertificateAuthenticationVerifier( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:55: public Optional verify(OAuth2ClientCertificateAuthenticationPayload authenticationPayload) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:86: private boolean isMatchingCertificate(Set verificationCertificates, X509Certificate payloadCertificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:97: private boolean payloadMatchesCertInfo(Set verificationCertificates, X509Certificate payloadCertificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:138: public static OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:139: return new OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:143: public static class OAuth2ClientCertificateAuthenticationVerifierBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:154: OAuth2ClientCertificateAuthenticationVerifierBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:158: public OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder verifierSource( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:170: public OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder certStatusCheckers( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:182: public OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder ignoreTemporalValidity( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:190: public OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder logger(@NonNull ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:200: public OAuth2ClientCertificateAuthenticationVerifier build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:201: return new OAuth2ClientCertificateAuthenticationVerifier(this.verifierSource, this.certStatusCheckers, this.ignoreTemporalValidity, this.logger); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/clientauthentication/certificate/OAuth2ClientCertificateAuthenticationVerifier.java:207: return "OAuth2ClientCertificateAuthenticationVerifier.OAuth2ClientCertificateAuthenticationVerifierBuilder(verifierSource=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/application/configuration/psd2/StetPsd2CertificateAuthenticator.java:176: return client.clientCertificates().stream().anyMatch(clientCertificate -> clientCertificate.matches(certificate)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3CodeGrantTokenManagerFactory.java:16:import com.airlock.iam.oauth2.domain.model.token.OAuth2ClientCertificateBindingConfirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3CodeGrantTokenManagerFactory.java:33:import com.airlock.iam.oauth2.domain.service.token.OAuth2ClientCertificateTokenBinder; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3CodeGrantTokenManagerFactory.java:92: ? OAuth2ClientCertificateTokenBinder.builder() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3CodeGrantTokenManagerFactory.java:93: .confirmationMethod(OAuth2ClientCertificateBindingConfirmationMethod.SHA_256) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3CodeGrantTokenManagerFactory.java:94: .logger(IntegrationLogger.getLogger(OAuth2ClientCertificateTokenBinder.class, asConfig.isIntegrationLogEnabled())) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3GrantSettingsFactory.java:107: .clientCertificates(config.oauth2ClientCertificates()) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:3:import com.airlock.iam.common.api.domain.model.certificate.ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:6:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificateAuthenticationPayload; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:7:import com.airlock.iam.oauth2.domain.model.token.OAuth2ClientCertificateBindingConfirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:15:public final class OAuth2ClientCertificateTokenBinder implements OAuth2TokenBinder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:17: private final OAuth2ClientCertificateBindingConfirmationMethod confirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:25: .filter(OAuth2ClientCertificateAuthenticationPayload.class::isInstance) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:26: .map(OAuth2ClientCertificateAuthenticationPayload.class::cast) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:27: .map(OAuth2ClientCertificateAuthenticationPayload::certificate) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:33: this.confirmationMethod.getMethod(), new ClientCertificate(certificate).getFingerprint(this.confirmationMethod.getAlgorithm(), Base64.getUrlEncoder()) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:38: public static OAuth2ClientCertificateTokenBinder.OAuth2ClientCertificateTokenBinderBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:39: return new OAuth2ClientCertificateTokenBinder.OAuth2ClientCertificateTokenBinderBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:43: private OAuth2ClientCertificateTokenBinder(@NonNull OAuth2ClientCertificateBindingConfirmationMethod confirmationMethod, @NonNull ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:57: public static class OAuth2ClientCertificateTokenBinderBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:59: private OAuth2ClientCertificateBindingConfirmationMethod confirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:64: OAuth2ClientCertificateTokenBinderBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:68: public OAuth2ClientCertificateTokenBinder.OAuth2ClientCertificateTokenBinderBuilder confirmationMethod( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:69: @NonNull OAuth2ClientCertificateBindingConfirmationMethod confirmationMethod work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:80: public OAuth2ClientCertificateTokenBinder.OAuth2ClientCertificateTokenBinderBuilder logger(@NonNull ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:90: public OAuth2ClientCertificateTokenBinder build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:91: return new OAuth2ClientCertificateTokenBinder(this.confirmationMethod, this.logger); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBinder.java:97: return "OAuth2ClientCertificateTokenBinder.OAuth2ClientCertificateTokenBinderBuilder(confirmationMethod=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:3:import com.airlock.iam.common.api.domain.model.certificate.ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:5:import com.airlock.iam.oauth2.domain.model.credential.OAuth2TokenBindingClientCertificateCredential; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:7:import com.airlock.iam.oauth2.domain.model.token.OAuth2ClientCertificateBindingConfirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:15:public final class OAuth2ClientCertificateTokenBindingVerifier implements OAuth2TokenBindingVerifier { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:21: Optional method = OAuth2ClientCertificateBindingConfirmationMethod.method(tokenBinding.getMethod()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:40: private boolean verifyFingerPrint(OAuth2TokenBinding tokenBinding, X509Certificate certificate, OAuth2ClientCertificateBindingConfirmationMethod method) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:41: ClientCertificate clientCertificate = new ClientCertificate(certificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:42: String fingerprint = clientCertificate.getFingerprint(method.getAlgorithm(), ENCODER); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:47: return clientAuthenticationPayload.filter(OAuth2TokenBindingClientCertificateCredential.class::isInstance) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:48: .map(OAuth2TokenBindingClientCertificateCredential.class::cast) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:49: .map(OAuth2TokenBindingClientCertificateCredential::getCertificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:53: public static OAuth2ClientCertificateTokenBindingVerifier.OAuth2ClientCertificateTokenBindingVerifierBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:54: return new OAuth2ClientCertificateTokenBindingVerifier.OAuth2ClientCertificateTokenBindingVerifierBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:58: private OAuth2ClientCertificateTokenBindingVerifier(ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:63: public static class OAuth2ClientCertificateTokenBindingVerifierBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:68: OAuth2ClientCertificateTokenBindingVerifierBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:72: public OAuth2ClientCertificateTokenBindingVerifier.OAuth2ClientCertificateTokenBindingVerifierBuilder logger(ELogger logger) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:78: public OAuth2ClientCertificateTokenBindingVerifier build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:79: return new OAuth2ClientCertificateTokenBindingVerifier(this.logger); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/oauth2/domain/service/token/OAuth2ClientCertificateTokenBindingVerifier.java:85: return "OAuth2ClientCertificateTokenBindingVerifier.OAuth2ClientCertificateTokenBindingVerifierBuilder(logger=" + this.logger + ")"; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:15:import com.airlock.iam.oauth2.application.configuration.clientauthentication.OAuth2ClientCertificateConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:24:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:143: private List clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:284: public Set oauth2ClientCertificates() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:285: return this.clientCertificates.stream().map(OAuth2ClientCertificateConfig::createClientCertificate).collect(Collectors.toSet()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:441: List clientCertificates, work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:463: this.clientCertificates = clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:497: private List clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:578: public OAuth2StaticClientConfig.OAuth2StaticClientConfigBuilder clientCertificates(List clientCertificates) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:579: this.clientCertificates = clientCertificates; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:693: this.clientCertificates, work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:732: + ", clientCertificates=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:733: + this.clientCertificates work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/OAuth2ASConfig.java:114:import com.airlock.iam.oauth2.domain.service.token.OAuth2ClientCertificateTokenBindingVerifier; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/OAuth2ASConfig.java:1006: return OAuth2ClientCertificateTokenBindingVerifier.builder().logger(this.getIntegrationLogger(OAuth2ClientCertificateTokenBindingVerifier.class)).build(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/IdPropagationPreparation.java:48: addIfValueNotEmpty(builder, "CLIENT_CERT_SUBJECT_DN", identityInfo.get().getClientCertSubjectDn().orElse(null)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/MsOfbaOneShotTargetApplication.java:19: description = "Microsoft Office Forms Based Authentication (MS-OFBA) One-Shot Target Application
Note: This target application allows to authenticate HTTP requests based on the original HTTP request sent by the client to Airlock WAF. Therefore, this plugin only works with Airlock Gateway (WAF) Settings being configured.

MS-OFBA Protocol
The MS-OFBA protocol provides a mechanism by which Microsoft Office clients (e.g. Word, Excel, ...) can establish an authenticated session with a server or gateway like Airlock WAF. The three steps for establishing an identity using forms based authentication between a protocol client and a protocol server are as follows:

  1. Initialization: Prior to opening the document on the remote server, the client sends a so called protocol discovery request, which is a HTTP OPTIONS request allowing the server to determine whether the client is a browser or not, based on the headers sent (see Browser vs. Nonbrowser Clients below). In the case of an nonbrowser client, this target application responds that its authentication method is forms based authentication, by returning a 403 HTTP response including a X-FORMS_BASED_AUTH_REQUIRED header with a URL, pointing to the location to which the client should navigate to authenticate. The response also includes a X-FORMS_BASED_AUTH_RETURN_URL header, which is the location to which the protocol server will redirect the user after a successful authentication.
  2. Negotiation: Having determined that the protocol server is capable of establishing an identity by using forms based authentication, the protocol client renders the HTML returned from the request to the remote location provided by the server in step 1 (X-FORMS_BASED_AUTH_REQUIRED header). Note that the duration of this step is neither deterministic nor specified by this protocol. The reason is that the client will continue to follow as many redirects and refreshes as necessary to successfully establish the identity, until the server redirects to the return URI provided by the server in step 1 (X-FORMS_BASED_AUTH_RETURN_URL header)
  3. Finalization: After the protocol server redirects the protocol client to the return URI, the protocol client assumes that the identity has been successfully established and reissues the original request from step 1. Note that the process for actually establishing the user's identity is not specified by this protocol.

Browser vs. Nonbrowser Clients
If the request from the client contains a X-FORMS_BASED_AUTH_ACCEPTED HTTP header or the User-Agent header matches the configured user agent regular expression, the client is considered to be a nonbrowser client. In this case, a forms based authentication required response is returned as described in the Initialization step of the protocol.
In the other case, where the client is considered to be a browser, a HTTP 302 redirect to the configured redirect url is returned. In addition, a location parameter is added to the redirect location, pointing to the initially accessed URL on the WAF. Therefore, the effect of accessing this target application with a browser is the same as if the Authentication Flow on the WAF mapping would have been set to Redirect instead of One-Shot.

", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/MsOfbaOneShotTargetApplication.java:33: displayName = "User Agent HTTP Header Pattern", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/MsOfbaOneShotTargetApplication.java:34: description = "To be recognized as a nonbrowser client that supports the MS-OFBA protocol, the protocol client MUST specify either a X-FORMS_BASED_AUTH_ACCEPTED header or a user agent string in an HTTP OPTIONS request.

IAM responds with a Forms Based Authentication Required response, as specified in the plugin description, iff

  • The X-FORMS_BASED_AUTH_ACCEPTED header field is present with a value of \"t\" or \"f\" (otherwise it is ignored) or
  • The request contains a User-Agent HTTP header that matches this regular expression pattern.
", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/session/UserIdentityInformation.java:10: private final Optional clientCertSubjectDn; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/session/UserIdentityInformation.java:16: public UserIdentityInformation(String username, @Nullable String providedUsername, @Nullable String clientCertSubjectDn) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/session/UserIdentityInformation.java:20: this.clientCertSubjectDn = Optional.ofNullable(clientCertSubjectDn); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/session/UserIdentityInformation.java:31: public Optional getClientCertSubjectDn() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/session/UserIdentityInformation.java:32: return this.clientCertSubjectDn; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:105: @PluginProperty(description = "The client credential extractor.", defaultValue = ClientCertificateExtractor.class, optional = true) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HeaderTicketExtractor.java:89: private String username(Ticket ticket) throws HeaderTicketExtractor.UsernameIsUnknown { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:29:public class ClientCertificateExtractor implements CredentialExtractor, OneShotTargetApplicationConfig.CredentialExtractorFactory { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:30: private static final ELogger LOG = ELoggerFactory.getLogger(ClientCertificateExtractor.class); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:36: return new ClientCertificateExtractor.ClientCertificateExtractorHelper(ServletConfigUtils.findGatewayConfig(this.context)).extract(request); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:41: return new ClientCertificateExtractor.ClientCertificateExtractorHelper(Optional.of(wafConfig)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:45: public static ClientCertificateExtractor.ClientCertificateExtractorBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:46: return new ClientCertificateExtractor.ClientCertificateExtractorBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:50: public ClientCertificateExtractor(ConfigurationContext context) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:55: public ClientCertificateExtractor() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:59: public static class ClientCertificateExtractorBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:64: ClientCertificateExtractorBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:68: public ClientCertificateExtractor.ClientCertificateExtractorBuilder context(ConfigurationContext context) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:74: public ClientCertificateExtractor build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:75: return new ClientCertificateExtractor(this.context); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:81: return "ClientCertificateExtractor.ClientCertificateExtractorBuilder(context=" + this.context + ")"; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:85: private static class ClientCertificateExtractorHelper implements CredentialExtractor { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:90: X509Certificate cert = this.extractClientCertificate(request); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:95: private X509Certificate extractClientCertificate(HttpServletRequest request) throws CredentialExtractor.CredentialExtractorException { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:100: ClientCertificateExtractor.LOG.debug("Got client certificate from " + source + ": " + cert.toString()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:109: return CertUtils.extractClientCertificateFromRequest(request, alEnvCookiePrefix); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:121: public ClientCertificateExtractorHelper(Optional wafConfig) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:83: Optional userAgent = Optional.ofNullable(request.getHeader("User-Agent")); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:87: LOG.debug(String.format("%s: %s", "User-Agent", userAgent.orElse("header is not present"))); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:98: LOG.debug("User-Agent header matches the configured regular expression pattern, therefore MS-OFBA is required."); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthCredentialExtractor.java:42: return new UserPasswordCredentialImpl(header.get().username().getValue(), header.get().password().getValue()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/CertificateTokenCredentialExtractorConfig.java:28: CredentialInfo certCredentialInfo = ((ClientCertificateExtractor.ClientCertificateExtractorBuilder)PluginPropertyBuilderInitializer.pluginBuilder( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/CertificateTokenCredentialExtractorConfig.java:29: ClientCertificateExtractor.ClientCertificateExtractorBuilder.class work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthCredentialExtractorFactory.java:21: description = "

Extracts username and password from the Basic Auth HTTP header.

Make sure to also configure the \"Basic Auth Error Mapper\" to respond with a corresponding \"WWW-Authenticate\" header in case of missing credentials.

", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoCredentialExtractorFactory.java:18:@Plugin(description = "Extracts the username from the Kerberos SPNEGO header.", displayName = "Kerberos SPNEGO Extractor") work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2ReportingServiceModule.java:40: .userAgent(request.getHeaderString("User-Agent")) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:41:import com.airlock.iam.oauth2.domain.model.token.OAuth2ClientCertificateBindingConfirmationMethod; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:58:import com.airlock.iam.oauth2.domain.service.token.OAuth2ClientCertificateTokenBinder; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:235: ? OAuth2ClientCertificateTokenBinder.builder() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:236: .confirmationMethod(OAuth2ClientCertificateBindingConfirmationMethod.SHA_256) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:237: .logger(configSpec.getIntegrationLogger(OAuth2ClientCertificateTokenBinder.class)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/rememberme/RememberMeTokenRepositoryImpl.java:16:import com.airlock.iam.common.domain.model.request.UserAgentRequestHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/rememberme/RememberMeTokenRepositoryImpl.java:120: .set(Tables.REMEMBER_ME_REQUEST_METADATA.HEADER_USER_AGENT, metadata.userAgentHeader().map(UserAgentRequestHeader::value).orElse(null)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/rememberme/RememberMeTokenRepositoryImpl.java:225: .userAgentHeader(mapUserAgent(record, table).orElse(null)) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/rememberme/RememberMeTokenRepositoryImpl.java:231: private static Optional mapUserAgent(Record record, RememberMeRequestMetadataTable table) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/rememberme/RememberMeTokenRepositoryImpl.java:232: return Optional.ofNullable((String)record.get(table.HEADER_USER_AGENT)).filter(StringUtils::isNotBlank).map(UserAgentRequestHeader::userAgent); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/reporting/RequestEnvironmentReportingDataProvider.java:33: builder.userAgent(request.getHeader("User-Agent")); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:13:import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2ClientCertificate; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:68: .clientCertificates(clientCertificate(metadata.getMtlsCertificate())) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:86: private static Set clientCertificate(Optional mtlsCertificate) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:87: return mtlsCertificate.stream().map(OAuth2ClientRepositoryClientLoader::clientCertificate).collect(Collectors.toSet()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:90: private static OAuth2ClientCertificate clientCertificate(MtlsCertificate asd) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/login/app/infrastructure/service/oauth2/clients/OAuth2ClientRepositoryClientLoader.java:93: return OAuth2ClientCertificate.builder().subjectDn(subject).issuerDn(issuer).build(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:64: .flatMap(LoginFromNewDeviceKnownUsersSerializer::checkHeader) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/application/configuration/sso/LoginappUiSsoTicketExtractorConfig.java:4:import com.airlock.iam.common.application.configuration.sso.SsoHeaderTicketExtractorConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/application/configuration/sso/LoginappUiSsoTicketExtractorConfig.java:13: description = "Extracts an SSO ticket from the Loginapp UI contained in the request headers. The header is expected to be named \"X-IAM-SSO-Ticket\".", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/application/configuration/sso/LoginappUiSsoTicketExtractorConfig.java:17:public class LoginappUiSsoTicketExtractorConfig implements SsoHeaderTicketExtractorConfig { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/application/configuration/sso/LoginappUiSsoTicketExtractorConfig.java:18: public static final String X_IAM_SSO_TICKET_HEADER_NAME = "X-IAM-SSO-Ticket"; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:5:import com.airlock.iam.common.domain.model.request.UserAgentRequestHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:15: private final Optional userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:19: private RememberMeRequestMetadata(@NonNull IpAddress requestIpAddress, @Nullable UserAgentRequestHeader userAgentHeader, @Nullable Geolocation geolocation) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:25: this.userAgentHeader = Optional.ofNullable(userAgentHeader); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:42: public Optional userAgentHeader() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:43: return this.userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:63: Object this$userAgentHeader = this.userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:64: Object other$userAgentHeader = other.userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:65: if (this$userAgentHeader == null ? other$userAgentHeader == null : this$userAgentHeader.equals(other$userAgentHeader)) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:85: Object $userAgentHeader = this.userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:86: result = result * 59 + ($userAgentHeader == null ? 43 : $userAgentHeader.hashCode()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:96: + ", userAgentHeader=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:97: + this.userAgentHeader() work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:108: private UserAgentRequestHeader userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:127: public RememberMeRequestMetadata.RememberMeRequestMetadataBuilder userAgentHeader(@Nullable UserAgentRequestHeader userAgentHeader) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:128: this.userAgentHeader = userAgentHeader; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:140: return new RememberMeRequestMetadata(this.requestIpAddress, this.userAgentHeader, this.geolocation); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:148: + ", userAgentHeader=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/flow/shared/domain/model/rememberme/RememberMeRequestMetadata.java:149: + this.userAgentHeader work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/application/configuration/password/HttpBasicAuthenticationStepConfig.java:39: description = "

An authentication flow step that verifies a username/password combination using HTTP Basic Authentication.

\n

If there are no preceding interactive steps in the flow, a request to one of the .../access endpoints\nwith the HTTP Basic Authentication credentials header will automatically be handled by this step. This allows for completely\nnon-interactive flows that are started with an \"access\" request and are immediately completed successfully, provided the\nHTTP Basic Authentication credentials are valid.

", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:77: description = "Terminates the authenticated user session. If IAM is behind an Airlock WAF,\nthe WAF session is terminated, even if no user session exists\nlocally in IAM.\n

\nOn logout, IAM may send a series of single logout URIs in separate headers to the client. A UI client (typically an SPA) is required\nto execute a redirect to each of the returned URIs before displaying any kind of 'after logout target'.\nThe headers are named X-SLO-REDIRECT-URI(i), where i runs from 1 to the number of sent single logout URIs.\n

\nExample: X-SLO-REDIRECT-URI1, X-SLO-REDIRECT-URI2, X-SLO-REDIRECT-URI3...\n

\nThe logout URIs can either be absolute URIs (including protocol, host and optional port) or they can be relative to the current host. Relative URIs start with a '/'.\n

\n
the response
", work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/infrastructure/event/LoginFromNewDeviceEventFactoryImpl.java:42: .item(StandardEventMetadataItemType.USER_AGENT_REQUEST_HEADER) work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/domain/model/password/BasicAuthStep.java:59: .checkPassword(basicAuthHeader.get().username().getValue(), basicAuthHeader.get().password()); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/browser/TypicalUserAgentRiskExtractor.java:43: Optional userAgent = entry.getRequestAttributes().getHeader("User-Agent"); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:15:@Plugin(description = "Extracts an SSO ticket from a specified HTTP header contained in the request.", displayName = "SSO Header Ticket Extractor") work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:17:public class SsoHeaderTicketExtractorConfigImpl implements SsoHeaderTicketExtractorConfig { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:52: public static SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:53: return new SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:57: public SsoHeaderTicketExtractorConfigImpl() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:61: public SsoHeaderTicketExtractorConfigImpl(String headerName, boolean urlDecodeValue, List stringTransformers) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:68: public static class SsoHeaderTicketExtractorConfigImplBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:77: SsoHeaderTicketExtractorConfigImplBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:81: public SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder headerName(String headerName) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:87: public SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder urlDecodeValue(boolean urlDecodeValue) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:93: public SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder stringTransformer(StringTransformerConfig stringTransformer) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:103: public SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder stringTransformers( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:119: public SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder clearStringTransformers() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:128: public SsoHeaderTicketExtractorConfigImpl build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:129: return new SsoHeaderTicketExtractorConfigImpl( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfigImpl.java:141: return "SsoHeaderTicketExtractorConfigImpl.SsoHeaderTicketExtractorConfigImplBuilder(headerName=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/sso/SsoHeaderTicketExtractorConfig.java:5:public interface SsoHeaderTicketExtractorConfig extends SsoTicketExtractorConfig { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:10:public final class ContextPatternForClientCertificateContextExtractor { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:33: public static ContextPatternForClientCertificateContextExtractor.ContextPatternForClientCertificateContextExtractorBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:34: return new ContextPatternForClientCertificateContextExtractor.ContextPatternForClientCertificateContextExtractorBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:38: public ContextPatternForClientCertificateContextExtractor() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:42: public ContextPatternForClientCertificateContextExtractor(Pattern pattern, String configurationContext) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:48: public static class ContextPatternForClientCertificateContextExtractorBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:55: ContextPatternForClientCertificateContextExtractorBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:59: public ContextPatternForClientCertificateContextExtractor.ContextPatternForClientCertificateContextExtractorBuilder pattern(Pattern pattern) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:65: public ContextPatternForClientCertificateContextExtractor.ContextPatternForClientCertificateContextExtractorBuilder configurationContext( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:73: public ContextPatternForClientCertificateContextExtractor build() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:74: return new ContextPatternForClientCertificateContextExtractor(this.pattern, this.configurationContext); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ContextPatternForClientCertificateContextExtractor.java:80: return "ContextPatternForClientCertificateContextExtractor.ContextPatternForClientCertificateContextExtractorBuilder(pattern=" work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:6:import com.airlock.iam.common.application.configuration.gateway.extractor.ClientCertificateExtractionFormatConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:7:import com.airlock.iam.common.application.configuration.gateway.extractor.ClientCertificatePemExtractionFormatConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:8:import com.airlock.iam.common.application.configuration.gateway.extractor.ClientCertificateXfccExtractionFormatConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:9:import com.airlock.iam.common.application.configuration.gateway.extractor.RequestMtlsClientCertificateExtractorConfig; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:10:import com.airlock.iam.common.domain.model.gateway.ClientCertificateExtractionFormat; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:11:import com.airlock.iam.common.domain.model.gateway.ClientCertificatePemExtractionFormat; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:12:import com.airlock.iam.common.domain.model.gateway.ClientCertificateXfccExtractionFormat; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:14:import com.airlock.iam.common.infrastructure.request.HttpRequestMtlsClientCertificateExtractorImpl; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:41:public final class ClientCertificateContextExtractor implements ContextExtractor { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:42: private static final ELogger LOG = ELoggerFactory.getLogger(ClientCertificateContextExtractor.class); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:47: private List mappings; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:108: for (ContextPatternForClientCertificateContextExtractor p : this.mappings) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:131: X509Certificate certFromEnvCookieOrRequest = CertUtils.extractClientCertificateFromRequest(request, this.getEnvCookiePrefix().orElse(null)); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:144: RequestMtlsClientCertificateExtractorConfig extractorConfig = airlockMicrogatewayConfig.getRequestMtlsClientCertificateExtractor(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:145: ClientCertificateExtractionFormat format = getClientCertificateExtractionFormat(extractorConfig); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:146: HttpRequestMtlsClientCertificateExtractorImpl extractor = new HttpRequestMtlsClientCertificateExtractorImpl(extractorConfig, () -> request, () -> format); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:147: return extractor.getMtlsClientCertificate().flatMap(ClientTlsCertificate::getX509Certificate); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:150: private static ClientCertificateExtractionFormat getClientCertificateExtractionFormat(RequestMtlsClientCertificateExtractorConfig extractorConfig) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:151: ClientCertificateExtractionFormatConfig formatConfig = extractorConfig.getExtractionFormat(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:152: if (formatConfig instanceof ClientCertificatePemExtractionFormatConfig) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:153: return new ClientCertificatePemExtractionFormat(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:154: } else if (formatConfig instanceof ClientCertificateXfccExtractionFormatConfig) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:155: return new ClientCertificateXfccExtractionFormat(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:166: public static ClientCertificateContextExtractor.ClientCertificateContextExtractorBuilder builder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:167: return new ClientCertificateContextExtractor.ClientCertificateContextExtractorBuilder(); work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:171: public ClientCertificateContextExtractor() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:175: public ClientCertificateContextExtractor( work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:176: List mappings, boolean matchAgainstSubjectDn, String fallbackContext, GatewayConfig gateway work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:185: public static class ClientCertificateContextExtractorBuilder { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:187: private ArrayList mappings; work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:196: ClientCertificateContextExtractorBuilder() { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:200: public ClientCertificateContextExtractor.ClientCertificateContextExtractorBuilder mapping(ContextPatternForClientCertificateContextExtractor mapping) { work/source-derived/airlock-iam-8.6.1/decompiled/com/airlock/iam/common/application/configuration/context/ClientCertificateContextExtractor.java:210: public ClientCertificateContextExtractor.ClientCertificateContextExtractorBuilder mappings(