decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeTokenGeneratingStepConfig.java:22: description = "

Step that generates a 'Remember-Me' token and adds it to the response as cookie.

In most use cases this step must be activated by the end-user and configured accordingly. If the step does not have to be activated, valid Remember-Me cookies are issued automatically. Depending on their usage, this may impose a security risk.

", decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:33: description = "If configured, Remember-Me cookies which originated from the JSP-Loginapp will be automatically migrated to the the new flow-based Remember-Me tokens. Be aware that invalid Remember-Me cookies will be forcibly removed from the client.", decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:34: displayName = "Migrate JSP Remember-Me Cookies", decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:37: private JspRememberMeConfig migrateJspRememberMeCookies; decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:48: public Optional getMigrateJspRememberMeCookies() { decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:49: return Optional.ofNullable(this.migrateJspRememberMeCookies); decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:64: @Nullable JspRememberMeConfig migrateJspRememberMeCookies decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:68: this.migrateJspRememberMeCookies = migrateJspRememberMeCookies; decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:109: private JspRememberMeConfig migrateJspRememberMeCookies; decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:190: public RememberMeUserIdentifyingStepConfig.RememberMeUserIdentifyingStepConfigBuilder migrateJspRememberMeCookies( decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:191: @Nullable JspRememberMeConfig migrateJspRememberMeCookies decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:193: this.migrateJspRememberMeCookies = migrateJspRememberMeCookies; decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:211: this.migrateJspRememberMeCookies decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:240: + ", migrateJspRememberMeCookies=" decompiled/com/airlock/iam/authentication/application/configuration/rememberme/RememberMeUserIdentifyingStepConfig.java:241: + this.migrateJspRememberMeCookies decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotTargetApplicationConfig.java:58: description = "Identity propagators add cookies and/or headers to the response after successful\nauthentication. The identity propagators are applied in the order in which they are configured.", decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:3:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:62: private AirlockControlCookieService.OneShotWorkflowAction workflow; decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:80: public AirlockControlCookieService.OneShotWorkflowAction getWorkflow() { decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:95: AirlockControlCookieService.OneShotWorkflowAction workflow decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:119: private AirlockControlCookieService.OneShotWorkflowAction workflow; decompiled/com/airlock/iam/authentication/application/configuration/targetapp/OneShotResponseMapperConfig.java:177: public OneShotResponseMapperConfig.OneShotResponseMapperConfigBuilder workflow(AirlockControlCookieService.OneShotWorkflowAction workflow) { decompiled/com/airlock/iam/authentication/application/configuration/targetapp/TargetApplicationConfig.java:65: description = "Identity propagators add cookies and/or headers to the response after successful authorization. The identity propagators are applied in the order in which they are configured.", decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultPersistencyLessAuthenticationProcessorsConfig.java:6:import com.airlock.iam.flow.shared.application.configuration.processor.RenewSessionIdProcessorConfig; decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultPersistencyLessAuthenticationProcessorsConfig.java:27: RenewSessionIdProcessorConfig.RENEW_SESSION_ID_PROCESSOR, decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultAuthenticationProcessorsConfig.java:9:import com.airlock.iam.flow.shared.application.configuration.processor.RenewSessionIdProcessorConfig; decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultAuthenticationProcessorsConfig.java:25: description = "If enabled, adds the \"Latest Authentication Feedback Processor\" to the list of authentication processors.
The latest authentication information is provided in all flow step results (REST responses) after successfully identifying the user. In addition, the Loginapp UI displays this information on selected second factor pages.

Note: If an authentication flow starts with a user identifying step without verification of an authentication factor (e.g. password, remember-me cookie, SSO ticket, ...) this may lead to unwanted information leakage.

", decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultAuthenticationProcessorsConfig.java:61: RenewSessionIdProcessorConfig.RENEW_SESSION_ID_PROCESSOR, decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultOneShotAuthenticationProcessorsConfig.java:8:import com.airlock.iam.flow.shared.application.configuration.processor.RenewSessionIdProcessorConfig; decompiled/com/airlock/iam/authentication/application/configuration/processor/DefaultOneShotAuthenticationProcessorsConfig.java:48: RenewSessionIdProcessorConfig.RENEW_SESSION_ID_PROCESSOR, decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:11:import com.airlock.iam.flow.shared.application.configuration.newdevice.NewDeviceCookieConfig; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:23: description = "Step which publishes an event if the user logged in from a new device:\n
    \n
  1. Looks for a cookie with the configured name.
  2. \n
  3. Decrypts the cookie with the configured key.
  4. \n
  5. Uses the cookie to find out if the user already logged in from the current device.
  6. \n
  7. Triggers an event if it is the first login from that device or the time since the last login exceeds the configured validity.
  8. \n
  9. Updates the cookie and sets it in the response.
  10. \n
", decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:28: @PluginProperty(description = "Configures the cookie that stores information about users who have logged in on a device.", optional = false) decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:30: private NewDeviceCookieConfig cookieSettings; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:33: NewDeviceCookieConfig cookieSettings, decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:47: this.cookieSettings = cookieSettings; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:50: public NewDeviceCookieConfig getCookieSettings() { decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:51: return this.cookieSettings; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:66: private NewDeviceCookieConfig cookieSettings; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:95: public LoginFromNewDeviceStepConfig.LoginFromNewDeviceStepConfigBuilder cookieSettings(NewDeviceCookieConfig cookieSettings) { decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:96: this.cookieSettings = cookieSettings; decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:171: this.cookieSettings, decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:189: return "LoginFromNewDeviceStepConfig.LoginFromNewDeviceStepConfigBuilder(cookieSettings=" decompiled/com/airlock/iam/authentication/application/configuration/newdevice/LoginFromNewDeviceStepConfig.java:190: + this.cookieSettings decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:40: this.verifyOnlyProductSteps(stepsInFlow); decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:42: this.verifyUsingFlowStepsFromReferencedFlow(stepUiConfigs, stepsInFlow); decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:43: this.verifyReferencedStepsHaveValidType(stepUiConfigs, stepsInFlow); decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:46: this.verifyAllDataStepsWithStepId(stepsInFlow); decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:47: this.verifyInteractiveStepsWithGotoTargetsHaveStepIdWhenShowGotoButtons(this.authUiConfig, stepsInFlow); decompiled/com/airlock/iam/authentication/application/configuration/ui/AuthenticationUiConfigValidator.java:50: private void verifyAllDataStepsWithStepId(List stepConfigs) throws ConfigurationException { decompiled/com/airlock/iam/authentication/application/configuration/identification/UserIdentifyingFidoStepConfig.java:30: description = "

User identifying flow step with integrated FIDO authentication.

\n

This step identifies users only by their username, thus it should only be integrated into flows where\neither a trusted, authenticated entity acts on behalf of the user, or further authentication steps\nverify the user's identity.

\n

Additionally, this step directly integrates FIDO passwordless authentication by supporting Webauthn\nconditional UI. When accessing the page, the user is automatically presented with FIDO credential selection\ndialog if it is supported by the browser, and allows the user to authenticate directly.

\n

Caution: This step allows user enumeration attacks. Such attacks cannot be prevented,\neven if \"Prevent User-Enumeration\" is enabled on the \"Authentication Flow\".

", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:3:import com.airlock.iam.core.misc.impl.sso.onbehalflogin.CookieMapping; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:23: description = "

This identity propagator performs a login 'on behalf' of the user at a backend web application.\nIt performs the necessary login steps to obtain an authenticated session from login into the backend application.\nThen it attaches the session cookie to the user's authenticated session, thus enabling access to the backend application.

\n

The login process is configured as a sequence of on behalf login steps. Each on behalf login step performs a\nHTTP operation and can store newly gathered information in an information storage for the next step.

\n

For example: A first on behalf login step executes a HTTP GET request on the web application's login page and extracts\nthe CSRF protection token. A next on behalf login step submits the login form with username, password and the extracted CSRF token.

\n

On behalf logins are not robust against changes of the web application. Therefore, this identity propagation\nmechanism is only recommended for legacy application that do not accept another way of identity propagation.

" decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:31: description = "A list of cookies that are expected from the backend application and that are kept for\nsubsequent access to this backend. Usually the only cookie to configure is the session cookie.", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:35: private List cookieMappings; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:70: public List getCookieMappings() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:71: return this.cookieMappings; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:99: List cookieMappings, decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:107: this.cookieMappings = cookieMappings; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:125: private ArrayList cookieMappings; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:181: public OnBehalfLoginIdentityPropagationConfig.OnBehalfLoginIdentityPropagationConfigBuilder cookieMapping(CookieMapping cookieMapping) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:182: if (this.cookieMappings == null) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:183: this.cookieMappings = new ArrayList<>(); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:186: this.cookieMappings.add(cookieMapping); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:191: public OnBehalfLoginIdentityPropagationConfig.OnBehalfLoginIdentityPropagationConfigBuilder cookieMappings( decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:192: Collection cookieMappings decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:194: if (cookieMappings == null) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:195: throw new NullPointerException("cookieMappings cannot be null"); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:198: if (this.cookieMappings == null) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:199: this.cookieMappings = new ArrayList<>(); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:202: this.cookieMappings.addAll(cookieMappings); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:207: public OnBehalfLoginIdentityPropagationConfig.OnBehalfLoginIdentityPropagationConfigBuilder clearCookieMappings() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:208: if (this.cookieMappings != null) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:209: this.cookieMappings.clear(); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:307: List cookieMappings = switch (this.cookieMappings == null ? 0 : this.cookieMappings.size()) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:309: case 1 -> Collections.singletonList(this.cookieMappings.get(0)); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:310: default -> Collections.unmodifiableList(new ArrayList<>(this.cookieMappings)); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:322: cookieMappings, decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:341: + ", cookieMappings=" decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/OnBehalfLoginIdentityPropagationConfig.java:342: + this.cookieMappings decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:9:@Plugin(description = "Adds a ticket string as a response cookie.") decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:10:public final class CookieTicketAdderConfig implements ResponseAdderConfig { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:12: description = "

The name of the cookie used to transport the ticket.

Only one cookie per cookie path and name can exist, therefore the name of this cookie must be distinct from all other cookie names used by this applications (such as \"JSESSIONID\").

", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:16: private String cookieName; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:18: description = "

The path for which the cookie is set. This determines with which future requests the cookie will be sent to the server.

To add the cookie to all requests to a given domain, the value \"/\" can be used. If the cookie should be limited to a certain backend, the corresponding context path should be used.

Only one cookie per cookie path and name can exist, therefore the name of this cookie must be distinct from all other cookie for the same path (such as \"JSESSIONID\").

When using an Airlock Gateway (WAF), the Gateway configuration flag Interpret Cookie Domains must be set. Otherwise the cookie path is ignored and cookies in the cookie store are sent with back-end HTTP requests of the same session.

", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:23: private String cookiePath; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:25: description = "The domain for which the cookie is set. This determines with which future requests the cookie will be sent to the server.

Because of security restrictions in browsers (same origin policy) it is usually not possible to set a cookie for a different domain (except subdomains).

Airlock Gateway (WAF) handle cookies differently and allow setting cookies for other domains within the protected infrastructure while not exposing them to the internet. The Gateway configuration flag Interpret Cookie Domains needs to be enabled for this feature. If this flag is enabled, also the following special domain names are supported:

  • An empty value results in the cookie only being sent to the origin server that set the cookie.
  • The value .* results in cookies being sent to all back-end servers.
  • Setting a different hostname results in the cookie being sent to the back-end host with that hostname.
Consult the Airlock Gataway documentation for more information on cookie handling.

", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:29: private String cookieDomain; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:31: description = "If enabled, the \"secure\"-flag of the cookie is set.

If the cookie is marked as secure, the browser (and any HTTP proxy behaving like a browser) should send the cookie only over secure connections.
", decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:37: public String getCookieName() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:38: return this.cookieName; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:41: public String getCookiePath() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:42: return this.cookiePath; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:45: public String getCookieDomain() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:46: return this.cookieDomain; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:54: public static CookieTicketAdderConfig.CookieTicketAdderConfigBuilder builder() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:55: return new CookieTicketAdderConfig.CookieTicketAdderConfigBuilder(); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:59: public CookieTicketAdderConfig(String cookieName, String cookiePath, String cookieDomain, boolean secureFlag) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:60: this.cookieName = cookieName; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:61: this.cookiePath = cookiePath; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:62: this.cookieDomain = cookieDomain; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:67: public CookieTicketAdderConfig() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:71: public static class CookieTicketAdderConfigBuilder { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:73: private String cookieName; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:75: private String cookiePath; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:77: private String cookieDomain; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:82: CookieTicketAdderConfigBuilder() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:86: public CookieTicketAdderConfig.CookieTicketAdderConfigBuilder cookieName(String cookieName) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:87: this.cookieName = cookieName; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:92: public CookieTicketAdderConfig.CookieTicketAdderConfigBuilder cookiePath(String cookiePath) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:93: this.cookiePath = cookiePath; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:98: public CookieTicketAdderConfig.CookieTicketAdderConfigBuilder cookieDomain(String cookieDomain) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:99: this.cookieDomain = cookieDomain; decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:104: public CookieTicketAdderConfig.CookieTicketAdderConfigBuilder secureFlag(boolean secureFlag) { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:110: public CookieTicketAdderConfig build() { decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:111: return new CookieTicketAdderConfig(this.cookieName, this.cookiePath, this.cookieDomain, this.secureFlag); decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:117: return "CookieTicketAdderConfig.CookieTicketAdderConfigBuilder(cookieName=" decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:118: + this.cookieName decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:119: + ", cookiePath=" decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:120: + this.cookiePath decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:121: + ", cookieDomain=" decompiled/com/airlock/iam/authentication/application/configuration/idpropagation/CookieTicketAdderConfig.java:122: + this.cookieDomain decompiled/com/airlock/iam/authentication/application/configuration/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractorConfig.java:16: description = "Risk Extractor that extracts the Airlock Gateway (WAF) client fingerprinting (CFP) score and compares it to the\nconfigured threshold. No tags are granted, if the request does not contain a CFP score environment cookie." decompiled/com/airlock/iam/authentication/application/configuration/risk/extractor/clientfingerprinting/SessionHijackingNotificationRiskExtractorConfig.java:14: description = "Risk Extractor that extracts the notification flag of the Airlock Gateway (WAF) client fingerprinting (CFP)\nrequest. The notification flag indicates whether client fingerprinting has detected a potential session hijacking.\nNo tags are granted, if the request does not contain a CFP notification environment cookie." decompiled/com/airlock/iam/authentication/application/configuration/risk/extractor/anomaly/AnomalyShieldStateRiskExtractorConfig.java:16: description = "Risk Extractor that extracts the state of the Gateway Anomaly Shield and compares it to the configured anomaly\nstates. No tags are granted, if the request does not contain an anomaly shield environment cookie." decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:9:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:32: private final Provider controlCookieService; decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:44: Provider controlCookieService, decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:54: this.controlCookieService = controlCookieService; decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:101: AirlockControlCookieService service = (AirlockControlCookieService)this.controlCookieService.get(); decompiled/com/airlock/iam/authentication/application/service/session/ApplicationAccessCompletedServiceImpl.java:104: service.addCredentialsWithKeepSessionId(wafCredentials); decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:48: "http://verifyopenrelay.org", decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:49: "https://verifyopenrelay.org", decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:50: "//verifyopenrelay.org", decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:51: "http://verifyopenrelay.org/x", decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:52: "https://verifyopenrelay.org/x", decompiled/com/airlock/iam/login/application/configuration/location/propagate/TargetURIResolverConfig.java:53: "//verifyopenrelay.org/x" decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:3:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:13: private final Provider cookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:14: private final Provider> jspCookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:19: Provider cookieBuilder, decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:20: Provider> jspCookieBuilder decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:23: this.cookieBuilder = cookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:24: this.jspCookieBuilder = jspCookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:28: public void deleteRememberMeCookie() { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:29: this.deleteCookieFromBuilder((RememberMeCookie.RememberMeCookieBuilder)this.cookieBuilder.get()); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:33: public void deleteJspRememberMeCookie() { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:34: if (((Optional)this.jspCookieBuilder.get()).isPresent()) { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:35: this.deleteCookieFromBuilder((RememberMeCookie.RememberMeCookieBuilder)((Optional)this.jspCookieBuilder.get()).get()); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:39: private void deleteCookieFromBuilder(RememberMeCookie.RememberMeCookieBuilder builder) { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:40: RememberMeCookie cookie = builder.value("").maxAge(0).build(); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:41: RememberMeCookieHeaderValueFactory.setCookie(cookie, (HttpServletResponse)this.response.get()); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:45: public void addRememberMeCookie(RememberMeCookie cookie) { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:46: RememberMeCookieHeaderValueFactory.setCookie(cookie, (HttpServletResponse)this.response.get()); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:59: private Provider cookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:61: private Provider> jspCookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:74: public RememberMeResponseImpl.RememberMeResponseImplBuilder cookieBuilder(Provider cookieBuilder) { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:75: this.cookieBuilder = cookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:80: public RememberMeResponseImpl.RememberMeResponseImplBuilder jspCookieBuilder( decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:81: Provider> jspCookieBuilder decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:83: this.jspCookieBuilder = jspCookieBuilder; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:89: return new RememberMeResponseImpl(this.response, this.cookieBuilder, this.jspCookieBuilder); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:97: + ", cookieBuilder=" decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:98: + this.cookieBuilder decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:99: + ", jspCookieBuilder=" decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeResponseImpl.java:100: + this.jspCookieBuilder decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:3:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:4:import com.airlock.iam.common.api.domain.model.cookie.KnownSameSitePolicy; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:5:import com.airlock.iam.common.infrastructure.util.CookieUtil; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:6:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:10:public final class RememberMeCookieHeaderValueFactory { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:11: public static void setCookie(RememberMeCookie rememberMeCookie, HttpServletResponse response) { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:12: Cookie cookie = new Cookie(rememberMeCookie.getName(), rememberMeCookie.getValue()); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:13: cookie.setHttpOnly(true); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:14: cookie.setSecure(true); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:15: rememberMeCookie.getMaxAge().ifPresent(cookie::setMaxAge); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:16: rememberMeCookie.getDomain().ifPresent(domain -> cookie.setDomain(stripLeadingDot(domain))); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:17: rememberMeCookie.getPath().ifPresent(cookie::setPath); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:18: CookieUtil.setCookie(response, cookie, KnownSameSitePolicy.LAX); decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeCookieHeaderValueFactory.java:25: private RememberMeCookieHeaderValueFactory() { decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:11:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:31: return Optional.ofNullable(ServletUtils.getCookie((HttpServletRequest)this.request.get(), this.config.getCookieName())) decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:32: .map(Cookie::getValue) decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:40: jspRememberMeConfig -> Optional.ofNullable(ServletUtils.getCookie((HttpServletRequest)this.request.get(), jspRememberMeConfig.getCookieName())) decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:41: .filter(c -> this.isRememberMeJspCookie(c.getValue())) decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:42: .map(Cookie::getValue) decompiled/com/airlock/iam/authentication/infrastructure/rememberme/RememberMeRequestImpl.java:47: private boolean isRememberMeJspCookie(String value) { decompiled/com/airlock/iam/authentication/infrastructure/factory/OnBehalfLoginIdentityPropagationModule.java:8:import com.airlock.iam.core.misc.impl.sso.onbehalflogin.CookieMapping; decompiled/com/airlock/iam/authentication/infrastructure/factory/OnBehalfLoginIdentityPropagationModule.java:40: List provideCookieMappings(OnBehalfLoginIdentityPropagationConfig config) { decompiled/com/airlock/iam/authentication/infrastructure/factory/OnBehalfLoginIdentityPropagationModule.java:41: return config.getCookieMappings(); decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeTokenGeneratingStepModule.java:4:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeTokenGeneratingStepModule.java:26: Optional provideRememberMeJspCookieBuilder() { decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:12:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:21: private final Provider controlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:24: public OneShotResponseServiceFactory(Provider toLogic, Provider controlCookieService) { decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:26: this.controlCookieService = controlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:38: AirlockControlCookieService.OneShotWorkflowAction.FINAL_RESPONSE, decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:39: (AirlockControlCookieService)this.controlCookieService.get() decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:46: AirlockControlCookieService.OneShotWorkflowAction.CONTINUE, decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:47: (AirlockControlCookieService)this.controlCookieService.get() decompiled/com/airlock/iam/authentication/infrastructure/factory/OneShotResponseServiceFactory.java:62: (AirlockControlCookieService)this.controlCookieService.get() decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceConditionModule.java:5:import com.airlock.iam.flow.shared.application.configuration.newdevice.NewDeviceCookieConfig; decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceConditionModule.java:6:import com.airlock.iam.flow.shared.domain.model.newdevice.LoginFromNewDeviceCookieName; decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceConditionModule.java:22: NewDeviceCookieConfig config = conditionConfig.getCookieSettings(); decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceConditionModule.java:24: new LoginFromNewDeviceCookieName(config.getCookieName()), decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeUserIdentifyingStepModule.java:4:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeUserIdentifyingStepModule.java:47: return config.getMigrateJspRememberMeCookies(); decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeUserIdentifyingStepModule.java:51: Optional provideRememberMeJspCookieBuilder( decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeUserIdentifyingStepModule.java:55: config -> RememberMeCookie.builder().name(config.getCookieName()).domain(config.getCookieDomain()).path(config.getCookiePath(contextPath.getPath())) decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeUserIdentifyingStepModule.java:66: return jspRememberMeConfig.map(c -> RememberMeTokenLifetime.lifetime(c.getCookieLifetimeDuration(), c.getCookieIdleTimeoutDuration())); decompiled/com/airlock/iam/authentication/infrastructure/factory/DeviceTokenFlowAuthenticationServiceModule.java:7:import com.airlock.iam.common.domain.model.jwt.signature.JwsAlgorithmEc; decompiled/com/airlock/iam/authentication/infrastructure/factory/WafSessionIdRepositoryModule.java:3:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdPrincipalRepository; decompiled/com/airlock/iam/authentication/infrastructure/factory/WafSessionIdRepositoryModule.java:4:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdRepository; decompiled/com/airlock/iam/authentication/infrastructure/factory/WafSessionIdRepositoryModule.java:8:public class WafSessionIdRepositoryModule extends PrivateModule { decompiled/com/airlock/iam/authentication/infrastructure/factory/WafSessionIdRepositoryModule.java:10: this.bind(WafSessionIdRepository.class).to(WafSessionIdPrincipalRepository.class).in(RequestScoped.class); decompiled/com/airlock/iam/authentication/infrastructure/factory/WafSessionIdRepositoryModule.java:11: this.expose(WafSessionIdRepository.class); decompiled/com/airlock/iam/authentication/infrastructure/factory/OAuth2ConsentStepModule.java:113: return new RemoteConsentVerifier(settings.verifier(), settings.decrypter(), asSettings); decompiled/com/airlock/iam/authentication/infrastructure/factory/OpenIdConectOpuasCookieServiceModule.java:3:import com.airlock.iam.oauth2.domain.service.OpenIdConnectOpuasCookieService; decompiled/com/airlock/iam/authentication/infrastructure/factory/OpenIdConectOpuasCookieServiceModule.java:4:import com.airlock.iam.oauth2.infrastructure.service.oidc.OpenIdConnectOpuasCookieServiceImpl; decompiled/com/airlock/iam/authentication/infrastructure/factory/OpenIdConectOpuasCookieServiceModule.java:7:public final class OpenIdConectOpuasCookieServiceModule extends PrivateModule { decompiled/com/airlock/iam/authentication/infrastructure/factory/OpenIdConectOpuasCookieServiceModule.java:9: this.bind(OpenIdConnectOpuasCookieService.class).to(OpenIdConnectOpuasCookieServiceImpl.class); decompiled/com/airlock/iam/authentication/infrastructure/factory/OpenIdConectOpuasCookieServiceModule.java:10: this.expose(OpenIdConnectOpuasCookieService.class); decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceStepModule.java:9:import com.airlock.iam.flow.shared.application.configuration.newdevice.NewDeviceCookieConfig; decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceStepModule.java:10:import com.airlock.iam.flow.shared.domain.model.newdevice.LoginFromNewDeviceCookieName; decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceStepModule.java:28: NewDeviceCookieConfig config = stepConfig.getCookieSettings(); decompiled/com/airlock/iam/authentication/infrastructure/factory/LoginFromNewDeviceStepModule.java:30: new LoginFromNewDeviceCookieName(config.getCookieName()), decompiled/com/airlock/iam/authentication/infrastructure/factory/DeviceTokenConditionModule.java:5:import com.airlock.iam.common.domain.model.jwt.signature.JwsAlgorithmEc; decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeLogoutServiceModule.java:3:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/authentication/infrastructure/factory/RememberMeLogoutServiceModule.java:41: Optional provideRememberMeJspCookieBuilder() { decompiled/com/airlock/iam/authentication/infrastructure/factory/LogoutActionServiceModule.java:13:import com.airlock.iam.oauth2.domain.model.logoutaction.RemoveOpuasCookieLogoutAction; decompiled/com/airlock/iam/authentication/infrastructure/factory/LogoutActionServiceModule.java:40: multibinder.addBinding().to(RemoveOpuasCookieLogoutAction.class); decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:4:import com.airlock.iam.common.api.domain.model.cookie.KnownSameSitePolicy; decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:6:import com.airlock.iam.common.infrastructure.util.CookieUtil; decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:12:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:36: Cookie cookie = new Cookie( decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:37: ((LoginFromNewDeviceSettings)this.settings.get()).cookieName().name(), decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:40: cookie.setHttpOnly(true); decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:41: cookie.setSecure(true); decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:42: cookie.setMaxAge(Math.toIntExact(((LoginFromNewDeviceSettings)this.settings.get()).validity().duration().toSeconds())); decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:43: cookie.setPath(((ContextPath)this.context.get()).getPath()); decompiled/com/airlock/iam/authentication/infrastructure/newdevice/LoginFromNewDeviceResponseImpl.java:44: CookieUtil.setCookie((HttpServletResponse)this.response.get(), cookie, KnownSameSitePolicy.LAX); decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:28: description = "

Airlock Gateway can indicate (using an environment cookie) that roles have been dropped. Dropped roles can be mapped to tags in Airlock IAM that should be dropped as a consequence.

", decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:43: description = "Usually, existing roles should be kept, i.e., the roles granted to a user in Airlock IAM should be\nadded to the existing set of roles of an Airlock Gateway session. This is achieved by using the\nAirlock Control Cookie command ADD_CREDENTIALS. If every identity propagation shall\nreplace all previously set roles, disable this property, which results in the Airlock Control Cookie\ncommand SET_CREDENTIALS.", decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:50: description = "

The name of the control cookie used to communicate with the Airlock Gateway (WAF) backend control API.\nThis must be the same as configured in Airlock.

\n

A control cookie is set after successful authentication with the roles granted to the user as\ncredentials/roles. Additionally, a new session ID is generated (to prevent session fixation attacks) and the\nglobal session ID is set as audit token.

\n

This property also enables so-called \"session tickets\". After successful authentication the user's name\nand the granted roles are stored in the current session plus a session ticket cookie including this\ninformation is stored in the Airlock Gateway cookie store. The session ticket is needed to re-authenticate\nany new session later.

", decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:55: private String controlCookieName; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:57: description = "The name of the prefix that Airlock Gateway (WAF) prepends to all environment cookies it sends to its\nbackends. This must be the same as configured in Airlock Gateway. It is used to extract, for example, the\nclient IP address or the client certificate.", decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:62: private String environmentCookiePrefix; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:76: String controlCookieName, decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:77: String environmentCookiePrefix, decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:83: this.controlCookieName = controlCookieName; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:84: this.environmentCookiePrefix = environmentCookiePrefix; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:98: .environmentCookiePrefix(this.environmentCookiePrefix) decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:100: .controlCookieName(this.controlCookieName) decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:120: public String getControlCookieName() { decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:121: return this.controlCookieName; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:124: public String getEnvironmentCookiePrefix() { decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:125: return this.environmentCookiePrefix; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:150: private String controlCookieName; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:152: private String environmentCookiePrefix; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:179: public LoginappGatewayConfig.LoginappGatewayConfigBuilder controlCookieName(String controlCookieName) { decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:180: this.controlCookieName = controlCookieName; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:185: public LoginappGatewayConfig.LoginappGatewayConfigBuilder environmentCookiePrefix(String environmentCookiePrefix) { decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:186: this.environmentCookiePrefix = environmentCookiePrefix; decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:202: this.controlCookieName, decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:203: this.environmentCookiePrefix, decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:217: + ", controlCookieName=" decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:218: + this.controlCookieName decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:219: + ", environmentCookiePrefix=" decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewayConfig.java:220: + this.environmentCookiePrefix decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:20:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:152: private final Provider requestCookieService; decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:155: HasWafSessionTerminationReason(Provider requestCookieService) { decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:156: this.requestCookieService = requestCookieService; decompiled/com/airlock/iam/authentication/infrastructure/resource/AuthenticationFlowResource.java:160: return ((AirlockEnvCookiesInformationService)this.requestCookieService.get()).getWafSessionTerminationReason().isPresent(); decompiled/com/airlock/iam/authentication/infrastructure/resource/EmailVerificationAuthFlowResource.java:73: public Response verifyEmailOtp(@Parameter(description = "Contains the OTP to be verified.") @NotNull @Valid GenericOtpCheckRequest request) { decompiled/com/airlock/iam/authentication/infrastructure/resource/EmailVerificationAuthFlowResource.java:74: FlowResult result = ((EmailVerification)this.emailVerification.get()).verifyEmailOtp(UnverifiedOtp.unverifiedOtp(request.getOtp())); decompiled/com/airlock/iam/authentication/infrastructure/resource/CrontoActivationAuthenticationFlowResource.java:119: public Response verifyFirstOtp( decompiled/com/airlock/iam/authentication/infrastructure/resource/CrontoActivationAuthenticationFlowResource.java:177: description = "Completes activating a new Cronto Device.\nActivates a new Cronto device by verifying the OTP the user has extracted from the cryptogram that was returned\nas additional attribute with the CRONTO_ACTIVATION_COMPLETE_REQUIRED next step code.\n
Whether the check was successful. If the attribute nextAuthStep is present in the response,\n further steps are required to successfully authenticate. If the attribute is missing, the user is\n successfully authenticated.
", decompiled/com/airlock/iam/authentication/infrastructure/resource/CrontoActivationAuthenticationFlowResource.java:185: public Response verifySecondOtp( decompiled/com/airlock/iam/authentication/infrastructure/resource/OAuth2ClientAuthenticationFlowResource.java:88: public Response verifyAuthorizationResponse( decompiled/com/airlock/iam/authentication/infrastructure/resource/OAuth2ClientAuthenticationFlowResource.java:91: FlowResult result = ((OAuth2Authentication)this.oAuth2Authentication.get()).verifyAuthorizationResponse(new QueryString(request.getQueryString())); decompiled/com/airlock/iam/authentication/infrastructure/resource/MtanRegistrationAuthResource.java:149: FlowResult result = ((MtanVerification)this.verfication.get()).verifyOtp(UnverifiedOtp.unverifiedOtp(request.getOtp())); decompiled/com/airlock/iam/authentication/infrastructure/resource/MtanRegistrationAuthResource.java:191: FlowResult result = ((MtanVerification)this.verfication.get()).verifyIak(new Iak(request.getIak())); decompiled/com/airlock/iam/authentication/infrastructure/resource/DeviceTokenRegistrationAuthFlowResource.java:57: description = "Starts a device token registration during an authentication flow.\n

\nRegister a new device token by providing a JSON Web Key (JWK) public key and optionally a label and/or a serial ID of the device.\nThe device token is only persisted if a subsequent \"Apply Changes Step\"\nwith an \"Apply Device Token Registration\" handler is configured.\n

\n

\nThe public key is represented as specified in JWK (RFC7517). Currently elliptic curve signatures (keys of type \"EC\") are supported.
\nThe following attributes are expected in the public key attribute (according to the JWK specification):\n

    \n
  • \"crv\" - the elliptic curve. Supported values are:\n
      \n
    • \"P-256\": for ES256 signatures
    • \n
    • \"P-256K\": for ES256K signatures
    • \n
    • \"P-384\": for ES384 signatures
    • \n
    • \"P-521\": for ES512 signatures
    • \n
    \nPlease note: During registration all four values are always allowed, but for the other use cases of device tokens (e.g. authentication)\nit is possible to restrict (in the IAM configuration) which curves are allowed.
  • \n
  • \"x\" - the x coordinate of the base point.
  • \n
  • \"y\" - the y coordinate of the base point.
  • \n
  • \"kty\" - the key type - must be \"EC\"
  • \n
  • \"kid\" - a key identifier (optional)
  • \n
\n

\n
If the attribute nextAuthStep is present in the response, further steps are required.\n If the attribute is missing, the registration has been successfully completed.
", decompiled/com/airlock/iam/authentication/infrastructure/resource/FidoAuthenticationFlowResource.java:128: public Response verify( decompiled/com/airlock/iam/authentication/infrastructure/resource/FidoAuthenticationFlowResource.java:132: .verify( decompiled/com/airlock/iam/authentication/infrastructure/resource/FidoAuthenticationFlowResource.java:136: .signature(request.getPublicKeyCredential().getResponse().getSignature()) decompiled/com/airlock/iam/authentication/infrastructure/resource/FidoRegistrationAuthenticationFlowResource.java:158: public Response verify( decompiled/com/airlock/iam/authentication/infrastructure/resource/FidoRegistrationAuthenticationFlowResource.java:163: .verify( decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OpenIdSessionManagementStatePropagator.java:6:import com.airlock.iam.oauth2.infrastructure.provider.OpenIDConnectOpuasCookieWriter; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OpenIdSessionManagementStatePropagator.java:22: state -> OpenIDConnectOpuasCookieWriter.writeCookie(this.response, this.contextPath, state, this.sessionManagementSettings.getSameSitePolicy()) decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/RequestHeaderTicketAdder.java:6:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/RequestHeaderTicketAdder.java:12: private final AirlockControlCookieService controlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/RequestHeaderTicketAdder.java:15: public RequestHeaderTicketAdder(RequestHeaderTicketAdderConfig config, AirlockControlCookieService controlCookieService) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/RequestHeaderTicketAdder.java:17: this.controlCookieService = controlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/RequestHeaderTicketAdder.java:22: this.controlCookieService.addRequestHeader(this.config.getHeaderName(), this.collateContent(content), this.config.getMappingNames()); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:8:import com.airlock.iam.core.misc.impl.sso.onbehalflogin.CookieMapping; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:32:import org.apache.hc.client5.http.cookie.Cookie; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:33:import org.apache.hc.client5.http.cookie.CookieStore; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:43: private final Provider> cookieMappings; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:53: Provider> cookieMappings, decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:61: this.cookieMappings = cookieMappings; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:69: HttpClientContext httpContext = ((HttpClientConfig)this.httpClient.get()).createHttpContextWithCookieStore(); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:71: this.writeAccessCookiesToResponse(httpContext); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:93: private void writeAccessCookiesToResponse(HttpClientContext httpContext) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:94: CookieStore cookieStore = httpContext.getCookieStore(); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:95: Map sentCookies = cookieStore.getCookies().stream().collect(Collectors.toMap(Cookie::getName, Function.identity())); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:96: List cookieNames = new ArrayList<>(); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:98: for (CookieMapping cookieMapping : (List)this.cookieMappings.get()) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:99: Optional targetCookie = mapCookie(cookieMapping, sentCookies); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:100: if (targetCookie.isPresent()) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:101: ((HttpServletResponse)this.response.get()).addCookie(targetCookie.get()); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:102: String name = targetCookie.get().getName(); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:103: cookieNames.add(name); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:107: if (!cookieNames.isEmpty()) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:108: this.signingLogger.log("Added the following backend cookies to the response for identity propagation: " + cookieNames); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:112: private static Optional mapCookie(CookieMapping mapping, Map sentCookies) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/OnBehalfLoginStepsImpl.java:114: return Optional.ofNullable(mapping.getMappedCookie(sentCookies)); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:4:import com.airlock.iam.authentication.application.configuration.idpropagation.CookieTicketAdderConfig; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:12:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:16:@LogicForConfig(CookieTicketAdderConfig.class) decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:17:public final class CookieTicketAdder implements ResponseAdder { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:18: private static final ELogger LOG = ELoggerFactory.getLogger(CookieTicketAdder.class); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:19: private final CookieTicketAdderConfig config; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:24: public CookieTicketAdder(CookieTicketAdderConfig config, HttpServletResponse response, SigningLogger signingLogger) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:35: "Writing a cookie containing the reserved character ';' - this may lead to incorrectly stored cookies. Please encode the value first." decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:39: Cookie cookie = new Cookie(this.config.getCookieName(), content); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:40: if (StringUtils.isNotBlank(this.config.getCookiePath())) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:41: cookie.setPath(this.config.getCookiePath()); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:44: if (StringUtils.isNotBlank(this.config.getCookieDomain())) { decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:45: cookie.setDomain(this.config.getCookieDomain()); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:48: cookie.setSecure(this.config.isSecureFlag()); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:49: this.response.addCookie(cookie); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/CookieTicketAdder.java:50: this.signingLogger.log("Added ticket cookie with name " + LogUtil.quote(this.config.getCookieName()) + " to response"); decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/LegacyIdentityPropagator.java:14:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/LegacyIdentityPropagator.java:58: private final Provider sessionId; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/LegacyIdentityPropagator.java:74: Provider sessionId, decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/LegacyIdentityPropagator.java:88: this.sessionId = sessionId; decompiled/com/airlock/iam/authentication/infrastructure/idpropagation/LegacyIdentityPropagator.java:140: multiValues.add(KeyMultiValue.kmv("GSID", ((SessionId)this.sessionId.get()).id())); decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:3:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:18: private final AirlockControlCookieService.OneShotWorkflowAction workflow; decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:19: private final AirlockControlCookieService controlCookieService; decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:30: this.controlCookieService.addOneShotWorkflowAction(this.workflow); decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:40: AirlockControlCookieService.OneShotWorkflowAction workflow, decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:41: AirlockControlCookieService controlCookieService decompiled/com/airlock/iam/authentication/infrastructure/service/oneshot/OneShotResponseMapper.java:48: this.controlCookieService = controlCookieService; decompiled/com/airlock/iam/authentication/domain/model/oath/OathOtpAuthenticationStepImpl.java:36: OtpVerificationService.OtpVerificationResult result = ((OtpVerificationService)this.service.get()).verifyOtp(otp); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUserFactorAuthenticationStepImpl.java:376: authAnswer.getSessionId(), decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUserFactorAuthenticationStepImpl.java:634: .abortAuthentication(futuraeSession.get().getAccountId(), futuraeSession.get().getSessionId()); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUserFactorAuthenticationStepImpl.java:710: this.stepSession().setFuturaeSession(answer.getSessionId(), factor); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUserFactorAuthenticationStepImpl.java:733: .validateOfflineQrCode(accountId, session.getFuturaeSession().orElseThrow().getSessionId(), otp); decompiled/com/airlock/iam/login/application/configuration/gateway/LoginappGatewaySettingsFactory.java:7: return WafSettings.builder(config.getControlCookieName(), config.getEnvironmentCookiePrefix()).build(); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:8:import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FASessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:18: private static final String CURRENT_SESSION_ID_KEY = "currentSessionId"; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:19: private static final String PREVIOUS_SESSION_ID_KEY = "previousSessionId"; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:24: private Optional currentSessionId = Optional.empty(); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:25: private Optional previousSessionId = Optional.empty(); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:48: public void refreshQrCode(TimeProvider time, Airlock2FASessionId sessionId, Airlock2FAQrCodeImage qrCode) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:49: this.previousSessionId = this.currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:50: this.currentSessionId = Optional.of(sessionId); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:57: return Airlock2FAAuthLogData.airlock2FAAuthLogData().withSessionIdIfPresent(this.currentSessionId); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:61: this.previousSessionId = Optional.empty(); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:71: .putIfPresent("currentSessionId", this.currentSessionId.map(Airlock2FASessionId::getSessionId)) decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:72: .putIfPresent("previousSessionId", this.previousSessionId.map(Airlock2FASessionId::getSessionId)) decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:83: values.getOptional("currentSessionId").map(Airlock2FASessionId::airlock2FASessionId), decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:84: values.getOptional("previousSessionId").map(Airlock2FASessionId::airlock2FASessionId), decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:94: Optional currentSessionId, decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:95: Optional previousSessionId, decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:101: this.currentSessionId = currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:102: this.previousSessionId = previousSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:119: public Optional getCurrentSessionId() { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:120: return this.currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:124: public Optional getPreviousSessionId() { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:125: return this.previousSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:162: Object this$currentSessionId = this.currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:163: Object other$currentSessionId = other.currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:164: if (this$currentSessionId == null ? other$currentSessionId == null : this$currentSessionId.equals(other$currentSessionId)) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:165: Object this$previousSessionId = this.previousSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:166: Object other$previousSessionId = other.previousSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:167: if (this$previousSessionId == null ? other$previousSessionId == null : this$previousSessionId.equals(other$previousSessionId)) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:204: Object $currentSessionId = this.currentSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:205: result = result * 59 + ($currentSessionId == null ? 43 : $currentSessionId.hashCode()); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:206: Object $previousSessionId = this.previousSessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStepSession.java:207: result = result * 59 + ($previousSessionId == null ? 43 : $previousSessionId.hashCode()); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepImpl.java:221: this.stepSession().setFuturaeSession(deferredAnswer.getSessionId()); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:33:import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FASessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:134: Optional> previousStatus = session.getPreviousSessionId() decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:142: session.getCurrentSessionId().orElseThrow() decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:259: private Result checkStatus(Airlock2FASessionId sessionId) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:260: return ((Airlock2FAAuthenticationService)this.service.get()).checkAuthenticationStatusUsernameless(sessionId); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAUsernamelessQrCodeAuthenticationStep.java:339: this.stepSession().refreshQrCode((TimeProvider)this.time.get(), answer.getSessionId(), answer.getQrCodeImage()); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:15:import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FASessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:55: public void setFuturaeSession(@NonNull Airlock2FASessionId sessionId) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:56: if (sessionId == null) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:57: throw new NullPointerException("sessionId is marked non-null but is null"); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:61: this.futuraeAuthSession = Optional.of(new Airlock2FAFuturaeAuthSession(this.accountId.get(), sessionId, Airlock2FAFactor.MOBILE_ONLY)); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAMobileOnlyAuthenticationStepSession.java:152: .withSessionIdIfPresent(this.futuraeAuthSession.map(Airlock2FAFuturaeAuthSession::getSessionId)); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAAuthenticationStepSession.java:26:import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FASessionId; decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAAuthenticationStepSession.java:198: public void setFuturaeSession(Airlock2FASessionId sessionId, Airlock2FAFactor factor) { decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAAuthenticationStepSession.java:201: this.futuraeSession = Optional.of(new Airlock2FAFuturaeAuthSession(this.accountId.orElseThrow(), sessionId, factor)); decompiled/com/airlock/iam/authentication/domain/model/airlock2fa/Airlock2FAAuthenticationStepSession.java:250: .withSessionIdIfPresent(this.getFuturaeSession().map(Airlock2FAFuturaeAuthSession::getSessionId)); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:6:public final class RememberMeJspTokenHmacKeyId { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:9: private RememberMeJspTokenHmacKeyId(@NonNull String id) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:17: public static RememberMeJspTokenHmacKeyId rememberMeHmacKeyId(String id) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:18: return new RememberMeJspTokenHmacKeyId(id); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:31: } else if (!(o instanceof RememberMeJspTokenHmacKeyId other)) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKeyId.java:52: return "RememberMeJspTokenHmacKeyId(id=" + this.getId() + ")"; decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:10:public final class RememberMeCookie { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:17: private RememberMeCookie(@NonNull String name, @Nullable String domain, @Nullable String path, @NonNull String value, @Nullable Integer maxAge) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:34: public static RememberMeCookie.RememberMeCookieBuilder builder() { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:35: return new RememberMeCookie.RememberMeCookieBuilder(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:68: } else if (!(o instanceof RememberMeCookie other)) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:121: return "RememberMeCookie(name=" decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:135: public static class RememberMeCookieBuilder { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:148: RememberMeCookieBuilder() { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:152: public RememberMeCookie.RememberMeCookieBuilder name(@NonNull String name) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:162: public RememberMeCookie.RememberMeCookieBuilder domain(@Nullable String domain) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:168: public RememberMeCookie.RememberMeCookieBuilder path(@Nullable String path) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:174: public RememberMeCookie.RememberMeCookieBuilder value(@NonNull String value) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:184: public RememberMeCookie.RememberMeCookieBuilder maxAge(@Nullable Integer maxAge) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:190: public RememberMeCookie build() { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:191: return new RememberMeCookie(this.name, this.domain, this.path, this.value, this.maxAge); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeCookie.java:197: return "RememberMeCookie.RememberMeCookieBuilder(name=" decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeResponse.java:4: void deleteRememberMeCookie(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeResponse.java:6: void deleteJspRememberMeCookie(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeResponse.java:8: void addRememberMeCookie(RememberMeCookie var1); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:45: private final Provider preconfiguredCookieBuilder; decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:59: Provider preconfiguredCookieBuilder, decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:71: this.preconfiguredCookieBuilder = preconfiguredCookieBuilder; decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:82: return jspSecret.isPresent() ? this.verifyAndMigrateJspRememberMeToken(jspSecret.get()) : this.findAndVerifyFlowRememberMeSecret(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:88: LOG.debug(String.format("No Remember-Me cookie found in request. Skipping '%s'.", this.getDescription())); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:91: return this.verifyRememberMeSecret(optionalSecret.get()); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:95: private AuthenticationStepResult verifyRememberMeSecret(RememberMeSecret secret) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:96: Result result = this.tokenVerificationService.verifyToken(secret); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:120: ((RememberMeResponse)this.response.get()).addRememberMeCookie(this.renewedCookie(tokenResult.token(), tokenResult.secret())); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:125: private AuthenticationStepResult verifyAndMigrateJspRememberMeToken(RememberMeJspSecret secret) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:126: ((RememberMeResponse)this.response.get()).deleteJspRememberMeCookie(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:127: Optional result = this.tokenVerificationService.verifyJspToken(secret); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:142: ((RememberMeResponse)this.response.get()).addRememberMeCookie(this.renewedCookie(newTokenResult.token(), newTokenResult.secret())); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:146: private RememberMeCookie renewedCookie(RememberMeToken token, RememberMeSecret newSecret) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:148: return ((RememberMeCookie.RememberMeCookieBuilder)this.preconfiguredCookieBuilder.get()) decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeUserIdentifyingStep.java:167: ((RememberMeResponse)this.response.get()).deleteRememberMeCookie(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKey.java:7:public final class RememberMeJspTokenHmacKey { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKey.java:10: private RememberMeJspTokenHmacKey(@NonNull ByteSequence key) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKey.java:18: public static RememberMeJspTokenHmacKey rememberMeHmacKey(byte[] key) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKey.java:19: return new RememberMeJspTokenHmacKey(ByteSequence.byteSequence(key)); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeJspTokenHmacKey.java:41: } else if (!(o instanceof RememberMeJspTokenHmacKey other)) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:25: private final Provider preconfiguredCookieBuilder; decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:34: Provider preconfiguredCookieBuilder, decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:41: this.preconfiguredCookieBuilder = preconfiguredCookieBuilder; decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:50: this.setRememberMeCookieInResponse(result.secret()); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:60: private void setRememberMeCookieInResponse(RememberMeSecret secret) { decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:61: RememberMeCookie cookie = ((RememberMeCookie.RememberMeCookieBuilder)this.preconfiguredCookieBuilder.get()).value(secret.base64Url()).build(); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:62: ((RememberMeResponse)this.response.get()).addRememberMeCookie(cookie); decompiled/com/airlock/iam/authentication/domain/model/rememberme/RememberMeTokenGeneratingStep.java:68: "Issued new Remember-Me cookie for user %s with ID %s and hash %s", decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttribute.java:53: public static SsoFlowSessionAttribute deserializeSessionAttribute(@NonNull Map rawValues) { decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttribute.java:58: Set parsedRoles = SsoFlowSessionAttributesSeralizer.deserializeRoles(rawValues); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttribute.java:59: Set parsedContextData = SsoFlowSessionAttributesSeralizer.deserializeContextData(rawValues); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoTicketIdentifyingStepImpl.java:103: Optional verifiedUserSessionIdentity = this.userSession.userId().filter(id -> id.hasSameId(identity)); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoTicketIdentifyingStepImpl.java:104: if (verifiedUserSessionIdentity.isPresent()) { decompiled/com/airlock/iam/authentication/domain/model/sso/SsoTicketIdentifyingStepImpl.java:105: this.logIgnoringTicket(verifiedUserSessionIdentity.orElseThrow()); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoTicketIdentifyingStepImpl.java:106: return this.userIdentifiedSuccessResult(verifiedUserSessionIdentity.orElseThrow(), Set.of()); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttributesSeralizer.java:28: public static Set deserializeRoles(Map values) { decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttributesSeralizer.java:29: return RolesSerializer.deserializeRoles(values.get("roles")); decompiled/com/airlock/iam/authentication/domain/model/sso/SsoFlowSessionAttributesSeralizer.java:32: public static Set deserializeContextData(Map values) { decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:11:import com.airlock.iam.common.domain.service.SessionIdService; decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:41: private final SessionIdService sessionIdService; decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:54: SessionIdService sessionIdService, decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:65: this.sessionIdService = sessionIdService; decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:109: this.sessionIdService.forceNewSessionId(); decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:220: private SessionIdService sessionIdService; decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:267: public AuthenticationFlowProcessor.AuthenticationFlowProcessorBuilder sessionIdService(SessionIdService sessionIdService) { decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:268: this.sessionIdService = sessionIdService; decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:304: this.sessionIdService, decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:325: + ", sessionIdService=" decompiled/com/airlock/iam/authentication/domain/model/processor/AuthenticationFlowProcessor.java:326: + this.sessionIdService decompiled/com/airlock/iam/authentication/domain/model/password/sessionattributes/PasswordCheckRolesAttribute.java:34: public static PasswordCheckRolesAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/authentication/domain/model/password/sessionattributes/PasswordCheckRolesAttribute.java:35: Set parsedRoles = RolesSerializer.deserializeRoles(rawValues.get("roles")); decompiled/com/airlock/iam/authentication/domain/model/password/UsernamePasswordFidoStepImpl.java:191: public AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse authenticatorResponse) { decompiled/com/airlock/iam/authentication/domain/model/password/UsernamePasswordFidoStepImpl.java:193: AuthenticationStepResult stepResult = this.fidoStep.verify(authenticatorResponse); decompiled/com/airlock/iam/authentication/domain/model/identification/UserIdentifyingFidoStepImpl.java:105: public AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse authenticatorResponse) { decompiled/com/airlock/iam/authentication/domain/model/identification/UserIdentifyingFidoStepImpl.java:107: AuthenticationStepResult stepResult = this.fidoStep.verify(authenticatorResponse); decompiled/com/airlock/iam/authentication/domain/model/fido/FidoPasswordlessAuthenticationStepImpl.java:153: public AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse authenticatorResponse) { decompiled/com/airlock/iam/authentication/domain/model/fido/FidoPasswordlessAuthenticationStepImpl.java:174: .verifyFidoResponse(((FidoChallengeSession)this.stepSession.get()).getChallenge(), fidoUser, authenticatorResponse); decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:57: public Map deserializeContextData(KeyMultiValue kmv, Predicate contextDataKeyMatchers) { decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:59: .map(v -> this.deserializeValue(v, contextDataKeyMatchers)) decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:102: Optional> deserializeValue(String string, Predicate contextDataKeyMatchers) { decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:121: return this.deserializeUsing(serializer, serializedEntry); decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:142: private Optional> deserializeUsing( decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:146: Object deserializedValue = serializer.deserialize(serializedEntry.getValue()); decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:147: return Optional.of(Map.entry(serializedEntry.getKey(), deserializedValue)); decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:151: "Unable to deserialize context data value from ticket of type " + serializer.getSerializableClass().getName() + " : " + e.getMessage() decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:154: "Unable to deserialize context data value from ticket of type " decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:220: private final Function deserializer; decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:234: public T deserialize(String s) throws IllegalArgumentException { decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:235: return this.deserializer.apply(s); decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:239: public Serializer(Class serializableClass, String identifier, Function serializer, Function deserializer) { decompiled/com/airlock/iam/login/application/service/session/ContextDataSerializer.java:243: this.deserializer = deserializer; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingNotificationRiskExtractor.java:12:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingNotificationRiskExtractor.java:24: private final Provider environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingNotificationRiskExtractor.java:31: Provider environmentCookieService, decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingNotificationRiskExtractor.java:36: this.environmentCookieService = environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingNotificationRiskExtractor.java:44: Optional cfpNotification = ((AirlockEnvCookiesInformationService)this.environmentCookieService.get()) decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractor.java:12:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractor.java:25: private final Provider environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractor.java:33: Provider environmentCookieService, decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractor.java:39: this.environmentCookieService = environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/clientfingerprinting/ClientFingerprintingScoreRiskExtractor.java:47: Optional cfpTotalPenaltyPoints = ((AirlockEnvCookiesInformationService)this.environmentCookieService.get()) decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/anomaly/AnomalyShieldStateRiskExtractor.java:12:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/anomaly/AnomalyShieldStateRiskExtractor.java:26: private final Provider environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/anomaly/AnomalyShieldStateRiskExtractor.java:34: Provider environmentCookieService, decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/anomaly/AnomalyShieldStateRiskExtractor.java:40: this.environmentCookieService = environmentCookieService; decompiled/com/airlock/iam/authentication/domain/model/risk/extractor/anomaly/AnomalyShieldStateRiskExtractor.java:48: Optional mlAnomalyState = ((AirlockEnvCookiesInformationService)this.environmentCookieService.get()).getWafMlAnomaly(); decompiled/com/airlock/iam/authentication/domain/service/secretquestions/SecretQuestionsLoginService.java:161: public boolean verifyChallengeAnswers(List answers) { decompiled/com/airlock/iam/authentication/domain/service/secretquestions/SecretQuestionsLoginService.java:176: if (!this.commonService.verifyAnswer(answer)) { decompiled/com/airlock/iam/authentication/domain/service/secretquestions/SecretQuestionsLoginService.java:177: this.signingLogger.log("Could not verify challenge for user \"%s\"", new Object[]{userId}); decompiled/com/airlock/iam/authentication/domain/service/secretquestions/SecretQuestionsLoginService.java:188: this.signingLogger.log("%s challenge for user \"%s\"", new Object[]{challengeVerified ? "Verified" : "Could not verify", userId}); decompiled/com/airlock/iam/authentication/domain/service/secretquestions/SecretQuestionsLoginService.java:194: this.signingLogger.log("Could not verify challenge for user \"%s\"", new Object[]{userId}); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:7:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKey; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:8:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKeyId; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:44: public Result verifyToken(RememberMeSecret secret) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:61: public Optional verifyJspToken(RememberMeJspSecret secret) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:62: Optional keyId = RememberMeJspTokenValidator.extractHmacKeyId(secret); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationServiceImpl.java:64: Optional userSecret = this.jspPersisterService.orElseThrow().findBy(keyId.get()); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeLogoutServiceImpl.java:53: ((RememberMeResponse)this.response.get()).deleteRememberMeCookie(); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeLogoutServiceImpl.java:57: this.logCookieDeletion(userId, hash); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeLogoutServiceImpl.java:62: private void logCookieDeletion(Optional userId, RememberMeSecretHash hash) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeLogoutServiceImpl.java:63: String message = String.format("Deleted Remember-Me cookie and token with hash %s for unknown user.", LogUtil.logSafeQuote(hash)); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeLogoutServiceImpl.java:66: "Deleted Remember-Me cookie and token with hash %s for user %s.", LogUtil.logSafeQuote(hash), LogUtil.logSafeQuote(userId.get().getValue()) decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:5:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKey; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:6:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKeyId; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:11:import com.airlock.iam.common.domain.model.jwt.signature.JsonWebSignatureToken; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:12:import com.airlock.iam.common.domain.model.jwt.signature.JwsAlgorithmHmac; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:13:import com.airlock.iam.common.domain.model.jwt.signature.JwsVerifier; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:14:import com.airlock.iam.common.domain.model.jwt.signature.JwsVerifierImpl; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:15:import com.airlock.iam.common.domain.model.jwt.signature.KeyId; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:24: public static final JwsAlgorithmHmac DEFAULT_ALGORITHM = JwsAlgorithmHmac.HS512; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:32: RememberMeJspSecret secret, RememberMeJspTokenHmacKeyId keyId, RememberMeJspTokenHmacKey hmacKey, RememberMeTokenLifetime lifetime decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:36: if (!algorithmFromJWT.equals(JwsAlgorithmHmac.HS512.name())) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:38: String.format("Unexpected hash signature algorithm: %s ; expected %s", LogUtil.quote(algorithmFromJWT), LogUtil.quote(DEFAULT_ALGORITHM.name())) decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:43: if (!verifier.verify(jwsToken)) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:44: LOG.info("Signature of JSP Remember-Me Cookie could not be verified."); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:53: public static Optional extractHmacKeyId(RememberMeJspSecret secret) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:56: return signedJwt.header().keyId().map(KeyId::keyId).map(RememberMeJspTokenHmacKeyId::rememberMeHmacKeyId); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspTokenValidator.java:74: private static Optional mapToJspToken(JsonWebSignatureToken signedJwt, RememberMeJspTokenHmacKeyId verifiedUserId, Optional keyId) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterService.java:3:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKey; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterService.java:4:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKeyId; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterService.java:8: Optional findBy(RememberMeJspTokenHmacKeyId var1); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterServiceImpl.java:3:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKey; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterServiceImpl.java:4:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeJspTokenHmacKeyId; decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterServiceImpl.java:24: public Optional findBy(RememberMeJspTokenHmacKeyId keyId) { decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterServiceImpl.java:25: return this.getCurrentSecret(keyId.getId()).map(RememberMeJspTokenHmacKey::rememberMeHmacKey); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeJspUserSecretPersisterServiceImpl.java:46: LOG.debug("Current JSP Remember-Me user secret not applicable for signature algorithm."); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationService.java:13: Result verifyToken(RememberMeSecret var1); decompiled/com/airlock/iam/authentication/domain/service/rememberme/RememberMeTokenVerificationService.java:17: Optional verifyJspToken(RememberMeJspSecret var1); decompiled/com/airlock/iam/authentication/domain/service/password/SetPasswordServiceImpl.java:57: .log("Setting password for user '%s' failed because decryption of a password failed", new Object[]{((UserPrincipal)this.principal.get()).getName()}); decompiled/com/airlock/iam/flow/shared/application/configuration/captcha/CustomCaptchaConfig.java:37: description = "URL of the CAPTCHA service to use. The CAPTCHA validation will be performed against a CAPTCHA server with this URL. The server API must match the reCAPTCHA API.

For example, the API request for reCAPTCHA is 'https://google.com/recaptcha/api/siteverify' as POST method with the 'secret' and the user 'response' token as POST parameters.

", decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:4:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:14: private final Provider sessionId; decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:17: public AuditTokenFactoryImpl(Provider> wafConfig, Provider sessionId) { decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:19: this.sessionId = sessionId; decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:24: String sessionId = ((SessionId)this.sessionId.get()).id(); decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:26: return Optional.of(sessionId).map(AuditToken::new); decompiled/com/airlock/iam/login/application/service/session/AuditTokenFactoryImpl.java:29: String auditTokenValue = ((AirlockGatewayConfig)((Optional)this.wafConfig.get()).get()).getAuditToken().getAuditTokenValue(sessionId, userId.getValue()); decompiled/com/airlock/iam/flow/shared/application/configuration/rememberme/RememberMeResetStepConfig.java:37: description = "Credential persister to delete the legacy cookie secrets from JSP-based authentication. Only needed as long as there are still users with valid Remember-Me secrets from JSP-based authentication.", decompiled/com/airlock/iam/flow/shared/application/configuration/vasco/CommonVascoOtpCheckingStepConfig.java:24: @PluginProperty(description = "The Vasco Handler uses the native Vacman Controller to verify the OTPs.", optional = false) decompiled/com/airlock/iam/flow/shared/application/configuration/TicketStringProviderConfig.java:52: description = "

The ticket encoder plugin used to encode the ticket to a string.

Attention: Do not use the \"Plain Ticket Encoder\" when storing this value in a cookie, as it might contain illegal values for cookies.

Some ticket encoders do not support ticket expiry, i.e. they do not encode the ticket validity into the ticket.

", decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:12:public class RenewSessionIdProcessorConfig implements FlowProcessorConfig { decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:14: public static final RenewSessionIdProcessorConfig RENEW_SESSION_ID_PROCESSOR = ((RenewSessionIdProcessorConfig.RenewSessionIdProcessorConfigBuilder)PluginPropertyBuilderInitializer.pluginBuilder( decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:15: RenewSessionIdProcessorConfig.RenewSessionIdProcessorConfigBuilder.class decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:20: public static RenewSessionIdProcessorConfig.RenewSessionIdProcessorConfigBuilder builder() { decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:21: return new RenewSessionIdProcessorConfig.RenewSessionIdProcessorConfigBuilder(); decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:25: public static class RenewSessionIdProcessorConfigBuilder { decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:27: RenewSessionIdProcessorConfigBuilder() { decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:31: public RenewSessionIdProcessorConfig build() { decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:32: return new RenewSessionIdProcessorConfig(); decompiled/com/airlock/iam/flow/shared/application/configuration/processor/RenewSessionIdProcessorConfig.java:38: return "RenewSessionIdProcessorConfig.RenewSessionIdProcessorConfigBuilder()"; decompiled/com/airlock/iam/flow/shared/application/configuration/processor/FailedFactorAttemptsProcessorConfig.java:10: description = "Processor for counting failed factor usages. Failed step results from authentication method verifying steps cause the failed attempts counter for the corresponding authentication method to be increased (unless explicitly overridden in the step result). After successful completion of a flow all counters of authentication methods used during the flow are reset. If strict counting is enabled, all exceptions are also counted as failed attempts.", decompiled/com/airlock/iam/flow/shared/application/configuration/processor/FailedFactorAttemptsProcessorConfig.java:26: description = "If strict counting is enabled, exceptions and failures to connect to external systems are also counted\nas failed attempts. This is recommended for security-critical flows such as authentication. If the current\nstep does not specify an authentication method, the failed attempt is counted for the last authentication\nmethod used in this flow, or a generic UNSPECIFIED if there was no previous authentication method verifying step.", decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:19:@Plugin(description = "Configures the cookie used for detecting a login from a new device.") decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:20:public final class NewDeviceCookieConfig { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:22: description = "The name of the cookie that is used to detect whether a login from a new device happened.

If this name is changed, the IAM Loginapp mapping on Airlock Gateway has to be reconfigured to pass-through this cookie.

", decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:29: private String cookieName; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:31: description = "

The key used to encrypt the cookie. Must be 32 Bytes encoded as Base64 String.

One can, for example, generate a random base64 string with 256 bits (32 bytes) using OpenSSL as follows: openssl rand -base64 32

If this value is changed, all previously used devices are forgotten.

", decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:48: public String getCookieName() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:49: return this.cookieName; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:73: public static NewDeviceCookieConfig.NewDeviceCookieConfigBuilder builder() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:74: return new NewDeviceCookieConfig.NewDeviceCookieConfigBuilder(); decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:78: public NewDeviceCookieConfig(String cookieName, String key, String validity) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:79: this.cookieName = cookieName; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:85: public NewDeviceCookieConfig() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:89: public static class NewDeviceCookieConfigBuilder { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:91: private String cookieName; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:98: NewDeviceCookieConfigBuilder() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:102: public NewDeviceCookieConfig.NewDeviceCookieConfigBuilder cookieName(String cookieName) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:103: this.cookieName = cookieName; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:108: public NewDeviceCookieConfig.NewDeviceCookieConfigBuilder key(String key) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:114: public NewDeviceCookieConfig.NewDeviceCookieConfigBuilder validity(String validity) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:120: public NewDeviceCookieConfig build() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:121: return new NewDeviceCookieConfig(this.cookieName, this.key, this.validity); decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceCookieConfig.java:127: return "NewDeviceCookieConfig.NewDeviceCookieConfigBuilder(cookieName=" + this.cookieName + ", key=" + this.key + ", validity=" + this.validity + ")"; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:9: description = "

This condition is met if the user never logged in on the current device.

Device recognition is based on a cookie configured in the 'Cookie Settings'. A device is considered new for a user if the cookie is either missing or does not contain information about a prior login for that specific user.

To use this condition effectively:

  • A 'Login from new Device Step' must be configured in the authentication flow. Without it, the condition always evaluates to 'true'.
  • This condition should be evaluated before the 'Login from new Device Step' is executed, otherwise the condition always evaluates to 'false'.

" decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:12: static final String COOKIE_SETTINGS_DISPLAY_NAME = "Cookie Settings"; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:14: @PluginProperty(description = "Configures the cookie that stores information about users who have logged in on a device.", optional = false) decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:15: private NewDeviceCookieConfig cookieSettings; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:17: public NewDeviceCookieConfig getCookieSettings() { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:18: return this.cookieSettings; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:31: public NewDeviceConditionConfig(NewDeviceCookieConfig cookieSettings) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:32: this.cookieSettings = cookieSettings; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:38: private NewDeviceCookieConfig cookieSettings; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:45: public NewDeviceConditionConfig.NewDeviceConditionConfigBuilder cookieSettings(NewDeviceCookieConfig cookieSettings) { decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:46: this.cookieSettings = cookieSettings; decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:52: return new NewDeviceConditionConfig(this.cookieSettings); decompiled/com/airlock/iam/flow/shared/application/configuration/newdevice/NewDeviceConditionConfig.java:58: return "NewDeviceConditionConfig.NewDeviceConditionConfigBuilder(cookieSettings=" + this.cookieSettings + ")"; decompiled/com/airlock/iam/flow/shared/application/configuration/devicetoken/DeviceTokenSettings.java:3:import com.airlock.iam.common.domain.model.jwt.signature.JwsAlgorithmEc; decompiled/com/airlock/iam/flow/shared/application/configuration/devicetoken/DeviceTokenSettings.java:28: description = "Allowed signature algorithms that can be used to authenticate with the device.", decompiled/com/airlock/iam/flow/shared/application/configuration/matrix/MatrixAuthStepConfig.java:21:@Plugin(description = "Step to verify a matrix card/index list challenge.", displayName = "Matrix Checking Step") decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:104: Optional content = this.externalizationService.verify(verification.context()); decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:110: Optional content = this.externalizationService.verify(verification.context()); decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:130: this.signingLogger.log("Failed to verify the mTAN phone number change context for user '%s'", new Object[]{verification.userId()}); decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:144: if (!this.verifyOtp(otp, verification.inputOtp)) { decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:162: private boolean verifyOtp(NonExpiringOneTimePassword otp, UnverifiedOtp inputOtp) { decompiled/com/airlock/iam/login/application/service/mtan/MtanSelfManagementService.java:163: return switch (otp.verify(inputOtp, OtpEqualityStrategy.equalityStrategy(!this.settings.otpCaseSensitive()))) { decompiled/com/airlock/iam/flow/shared/application/configuration/identification/UserIdentifyingStepConfig.java:29: description = "

Configuration for a user identifying flow step.

\n

This step identifies users only by their username, thus it should only be integrated into flows where\neither a trusted, authenticated entity acts on behalf of the user, or further authentication steps\nverify the user's identity.

\n

Caution: This step allows user enumeration attacks. Such attacks cannot be prevented,\neven if \"Prevent User-Enumeration\" is enabled on the \"Authentication Flow\".

", decompiled/com/airlock/iam/flow/shared/application/configuration/step/MtanVerificationStepConfig.java:33: description = "Flow step to verify the registration of an mTAN number of a previous user data edit step to be used as an authentication method. It sends an OTP to the number to be verified and optionally also verifies an IAK that was sent by letter. This step is typically followed by an \"Apply Changes Step\" with an \"Apply mTAN Registration Change\" handler, unless the number is already pre-registered and persisting is not needed. ", decompiled/com/airlock/iam/flow/shared/application/configuration/step/email/EmailChangeVerificationStepConfig.java:47: description = "Email address provider for the email address to verify. The \"Changed Email Address Provider\" can be used to provide the changed email address, if this step follows after a User Data Edit Step with an \"Email Item Definition\".", decompiled/com/airlock/iam/flow/shared/application/service/recovery/UserSessionRecoveryConfig.java:8: public static final String TICKET_KEY_USER_SESSION_ID = "sessionId"; decompiled/com/airlock/iam/flow/shared/application/service/recovery/SessionAttributeReaderFactory.java:101: return Optional.of(clazz.getMethod("deserializeSessionAttribute", Map.class)); decompiled/com/airlock/iam/flow/shared/application/service/MtanVerification.java:20: public FlowResult verifyOtp(UnverifiedOtp otp) { decompiled/com/airlock/iam/flow/shared/application/service/MtanVerification.java:21: return this.executeStepMethod(step -> step.verifyOtp(otp)); decompiled/com/airlock/iam/flow/shared/application/service/MtanVerification.java:24: public FlowResult verifyIak(Iak iak) { decompiled/com/airlock/iam/flow/shared/application/service/MtanVerification.java:25: return this.executeStepMethod(step -> step.verifyIak(iak)); decompiled/com/airlock/iam/flow/shared/application/service/RoleRemovalServiceImpl.java:5:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/flow/shared/application/service/RoleRemovalServiceImpl.java:24: private final Provider envCookieService; decompiled/com/airlock/iam/flow/shared/application/service/RoleRemovalServiceImpl.java:30: Provider envCookieService, decompiled/com/airlock/iam/flow/shared/application/service/RoleRemovalServiceImpl.java:34: this.envCookieService = envCookieService; decompiled/com/airlock/iam/flow/shared/application/service/RoleRemovalServiceImpl.java:71: return ((AirlockEnvCookiesInformationService)this.envCookieService.get()) decompiled/com/airlock/iam/flow/shared/application/service/fido/FidoCheck.java:27: public FlowResult verify(FidoAuthenticatorUnverifiedAssertionResponse authenticatorResponse) { decompiled/com/airlock/iam/flow/shared/application/service/fido/FidoCheck.java:28: return this.executeStepMethod(step -> step.verify(authenticatorResponse)); decompiled/com/airlock/iam/flow/shared/application/service/fido/FidoRegistration.java:24: public FlowResult verify(FidoAuthenticatorUnverifiedAttestationResponse authenticatorResponse) { decompiled/com/airlock/iam/flow/shared/application/service/fido/FidoRegistration.java:25: return this.executeStepMethod(step -> step.verify(authenticatorResponse)); decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:5:import com.airlock.iam.core.misc.util.airlock.AirlockEnvCookie; decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:15:public final class EnvCookieWafTagTimeoutExpiry implements WafTagTimeoutExpiry { decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:20: public EnvCookieWafTagTimeoutExpiry(Optional wafConfig, HttpServletRequest request) { decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:29: : this.rolesFromEnvCookie(this.wafConfig.get()).stream().map(Role::getRoleName).noneMatch(roleNameIsInternalRoleFromTag(tagName)); decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:32: private Collection rolesFromEnvCookie(WafSettings wafConfiguration) { decompiled/com/airlock/iam/flow/shared/application/service/tag/EnvCookieWafTagTimeoutExpiry.java:33: return AirlockEnvCookie.rolesOrEmpty(this.request, wafConfiguration.getEnvironmentCookiePrefix()); decompiled/com/airlock/iam/login/rest/application/configuration/LoginappRestConfig.java:80: description = "Enables rewriting of links in REST responses. If rewriting is disabled or cannot be done correctly due to missing information, the internal URI is written to the response.

If a 'Base URI' is configured, links are rewritten according to the configured value. Otherwise, links are rewritten according to the external view provided by the WAF (if configured an a WAF environment cookie is present).

", decompiled/com/airlock/iam/login/rest/application/configuration/LoginappRestConfig.java:88: description = "Allows to change the base URI for all links in REST responses.

This property is useful in test environments where you want links contained in REST responses to be relative to the configured base URI. Note that configuring this property will take precedence over link rewriting based on the WAF environment cookie.

In order to produce correct links, the property must be configured up to and including the /rest subpath. IAM will automatically append public to the configured value for calls to the public API and protected for calls to the protected API of the Loginapp (or oauth2 for OAuth 2.0/OpenId Connect endpoints).

Example:

  • Property value: http://myhost:8090/test/rest
  • The response from the REST call to /<loginapp-uri>/rest/public/users/register will contain a link to http://myhost:8090/test/rest/protected/my/self

", decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:3:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:17:public final class ControlCookieTagTimeoutStarter implements WafTagTimeoutStarter { decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:19: private final AirlockControlCookieService cookieService; decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:22: public ControlCookieTagTimeoutStarter(AirlockControlCookieService cookieService) { decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:23: this.cookieService = cookieService; decompiled/com/airlock/iam/flow/shared/application/service/tag/ControlCookieTagTimeoutStarter.java:28: this.cookieService.addCredentialsWithKeepSessionId(wafCredentials(tagName, lifetime, idleTimeout)); decompiled/com/airlock/iam/flow/shared/infrastructure/mapper/FlowResultMapperImpl.java:8:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/mapper/FlowResultMapperImpl.java:28: private final Provider sessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/mapper/FlowResultMapperImpl.java:36: Provider sessionId, decompiled/com/airlock/iam/flow/shared/infrastructure/mapper/FlowResultMapperImpl.java:42: this.sessionId = sessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/mapper/FlowResultMapperImpl.java:98: return ResourceObject.builder(((SessionId)this.sessionId.get()).id(), attributes).document(); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:9:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:68: return FlowBasedIamSession.createFreshIamSession(this.sessionIdSupplier()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:73: LockAndFindResult result = ((StateRepository)this.stateRepository.get()).lockAndFind(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:79: return Optional.of(FlowBasedIamSession.createIamSessionForLockNotAcquired(this.sessionIdSupplier(), sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:84: .deserializeSession(Optional.of(sessionStateId), result.value().orElseThrow()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:96: ((StateRepository)this.stateRepository.get()).updateAndUnlock(keyForSessionId(sessionStateId), serialized, (StateTimeout)this.defaultTimeout.get()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:99: RemoveAndUnlockResult removeAndUnlockResult = ((StateRepository)this.stateRepository.get()).removeAndUnlock(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:104: ((StateRepository)this.stateRepository.get()).removeAndForceUnlock(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:111: private Supplier sessionIdSupplier() { decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:112: return new LazySupplier<>(null, x -> ((CorrelationIdService)this.correlationIdService.get()).determineNewSessionId()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:131: .insertAndUnlockAdditionalKeys(keyForSessionId(session.sessionStateId()), sessionJson, this.stateTimeout(), keyForUserId(userId)) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:136: .insert(keyForSessionId(session.sessionStateId()), sessionJson, this.stateTimeout()) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:147: .updateAndUnlock(keyForSessionId(session.sessionStateId()), sessionJson, this.stateTimeout(), keyForUserId(userId)) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:150: () -> ((StateRepository)this.stateRepository.get()).updateAndUnlock(keyForSessionId(session.sessionStateId()), sessionJson, this.stateTimeout()) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:168: ((StateRepository)this.stateRepository.get()).removeAndForceUnlock(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:173: ((StateRepository)this.stateRepository.get()).unlock(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:179: Optional result = ((StateRepository)this.stateRepository.get()).findReadOnly(keyForSessionId(sessionStateId)); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:185: .deserializeSession(Optional.of(sessionStateId), result.orElseThrow()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionRepository.java:206: private static StateRepositoryKey keyForSessionId(SessionStateId sessionStateId) { decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:6:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:16: @NonNull Optional sessionId, decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:23: public static final String SESSION_ID_KEY = "sessionId"; decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:32: if (sessionId == null) { decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:33: throw new NullPointerException("sessionId is marked non-null but is null"); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionValues.java:60: .putIfPresent("sessionId", this.sessionId.map(SessionId::id)) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowSessionTagsMapifierImpl.java:41: List initialTags = deserializeTagNames(values, "initialTagNames").toList(); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowSessionTagsMapifierImpl.java:43: Set usedInitialTags = deserializeTagNames(values, "usedInitialTags").collect(Collectors.toSet()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowSessionTagsMapifierImpl.java:46: Set removedTags = deserializeTagNames(values, "tagsToRemove").collect(Collectors.toSet()); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowSessionTagsMapifierImpl.java:51: private static Stream deserializeTagNames(MapifiedValues mapifiedValues, String key) { decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:11:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:54: Optional.of(session.sessionId()), decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:93: public Result deserializeSession( decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:100: SessionId sessionId = new SessionId(values.get("sessionId")); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:105: .formatted(LogUtil.logSafeQuote(sessionId), dataVersion.toFullVersionString(), iamVersion.toFullVersionString()) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:115: sessionId, sessionStateId.get(), SessionNoncesMapifier.demapifyNonces(values.getValues("nonces")), context, userSession decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:117: : FlowBasedIamSession.createRestoredFromTicket(() -> sessionId, context, userSession); decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializerImpl.java:132: rawValue -> ((StateMachineSerializer)this.stateMachineSerializer.get()).deserializeStateMachine(rawValue, flowSession(session).get()) decompiled/com/airlock/iam/flow/shared/infrastructure/session/FlowBasedIamSessionSerializer.java:12: Result deserializeSession(Optional var1, String var2); decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/response/fido/FidoPublicKeyCreationOptionsData.java:640: description = "Number specifying the cryptographic signature algorithm with which the newly generated credential will be used, and thus also the type of asymmetric key pair to be generated, e.g., RSA or Elliptic Curve. The number used is specified by the COSE algorithms registry (see https://www.iana.org/assignments/cose/cose.xhtml#algorithms)." decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:19: @Schema(description = "This attribute contains the raw signature returned from the authenticator.") decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:20: private String signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:38: return this.signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:58: public void setSignature(String signature) { decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:59: this.signature = signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:85: Object this$signature = this.signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:86: Object other$signature = other.signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:87: if (this$signature == null ? other$signature == null : this$signature.equals(other$signature)) { decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:117: Object $signature = this.signature; decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:118: result = result * 59 + ($signature == null ? 43 : $signature.hashCode()); decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:130: + ", signature=" decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:142: public FidoAuthenticatorAssertionData(String clientDataJSON, String authenticatorData, String signature, @Nullable String userHandle) { decompiled/com/airlock/iam/flow/shared/infrastructure/transfer/request/fido/FidoAuthenticatorAssertionData.java:145: this.signature = signature; decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:9:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:32:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:76: : ServletUtils.tryGetCookie((HttpServletRequest)this.request.get(), "IAM_FLOW_SESSION_TICKET") decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:77: .map(Cookie::getValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:78: .flatMap(this::restoreSessionFromCookieValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:86: : ServletUtils.tryGetCookie((HttpServletRequest)this.request.get(), "IAM_FLOW_SESSION_TICKET") decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:87: .map(Cookie::getValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:91: private Optional restoreReadOnlyData(String cookieValue) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:94: .decrypt(cookieValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:95: .map(values -> ((FlowBasedIamSessionSerializer)this.serializer.get()).deserializeSession(Optional.empty(), values)) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:115: private Optional restoreSessionFromCookieValue(String cookieValue) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:118: .decrypt(cookieValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:119: .map(values -> ((FlowBasedIamSessionSerializer)this.serializer.get()).deserializeSession(Optional.empty(), values)) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:123: .or(() -> Optional.of(this.newRestoredSessionFromlegacyFormat(cookieValue))); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:126: private FlowBasedIamSession newRestoredSessionFromlegacyFormat(String cookieValue) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:129: .decrypt(cookieValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:132: return map.containsKey("userId") ? this.restoreFromLegacy1Ticket(map) : this.restoreFromLegacy2Ticket(cookieValue); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:135: private Supplier sessionIdSupplier() { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:136: return () -> ((CorrelationIdService)this.correlationIdService.get()).determineNewSessionId(); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:143: this.sessionIdSupplier(), decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:152: private FlowBasedIamSession restoreFromLegacy2Ticket(String cookieValue) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:154: return this.decodeLegacy2Ticket(cookieValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:157: this.sessionIdSupplier(), ConfigurationContext.defaultContext(), LazyUserSession.alreadySupplied(session) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:160: .orElseGet(() -> FlowBasedIamSession.createFreshIamSession(this.sessionIdSupplier())); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:163: private Optional decodeLegacy2Ticket(String cookieValue) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketRestoreImpl.java:165: return Optional.of(((SessionTicketSettings)this.settings.get()).legacyDecoder().decode(cookieValue, UserSessionRecoveryConfig.ENCODING_SCHEME)) decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:15:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:46: this.serializeSession(iamSession).map(((IamCipher)this.cipher.get())::encrypt).map(this::createCookie).ifPresent(this.response::addCookie); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:64: private Cookie createCookie(String encodedTicket) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:65: Cookie cookie = new Cookie("IAM_FLOW_SESSION_TICKET", encodedTicket); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:66: cookie.setSecure(false); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:67: cookie.setPath(this.request.getContextPath()); decompiled/com/airlock/iam/flow/shared/infrastructure/service/recovery/SessionTicketPersistImpl.java:68: return cookie; decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:62: public Result deserialize(String rawJwt) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:66: .flatMap(jwt -> decrypt(((LoginFromNewDeviceSettings)this.settings.get()).encryptionKey(), jwt)) decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:115: private static Result decrypt(LoginFromNewDeviceEncryptionKey encryptionKey, EncryptedJWT encryptedJWT) { decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:117: DirectDecrypter decrypter = new DirectDecrypter(encryptionKey.bytes()); decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceKnownUsersSerializer.java:118: encryptedJWT.decrypt(decrypter); decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceRequestImpl.java:10:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceRequestImpl.java:31: ServletUtils.getCookie((HttpServletRequest)this.request.get(), ((LoginFromNewDeviceSettings)this.settings.get()).cookieName().name()) decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceRequestImpl.java:33: .map(Cookie::getValue) decompiled/com/airlock/iam/flow/shared/infrastructure/service/newdevice/LoginFromNewDeviceRequestImpl.java:34: .map(jwt -> ((LoginFromNewDeviceKnownUsersSerializer)this.serializer.get()).deserialize(jwt)) decompiled/com/airlock/iam/flow/shared/infrastructure/service/fido/FidoRegistrationServiceImpl.java:143: public Result verifyAuthenticatorAttestation( decompiled/com/airlock/iam/flow/shared/infrastructure/service/fido/FidoRegistrationServiceImpl.java:152: .verifyRegistration(challenge, response, this.attestationVerifier); decompiled/com/airlock/iam/flow/shared/infrastructure/service/fido/FidoRegistrationServiceImpl.java:195: .signatureCounter(FidoSignatureCounter.zero()) decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/HCaptchaModule.java:49: return new CaptchaValidationServiceImpl(restClient(config), "/siteverify"); decompiled/com/airlock/iam/flow/shared/api/domain/model/session/GenericStringsSessionAttribute.java:66: public static GenericStringsSessionAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/api/domain/model/session/UserSessionScopedFlowAttribute.java:7: String SESSION_ATTRIBUTE_DESERIALIZE_METHOD_NAME = "deserializeSessionAttribute"; decompiled/com/airlock/iam/flow/shared/domain/model/oath/OathOtpActivationStepImpl.java:66: TokenVerifierResponse verifierResponse = ((OathOtpActivationService)this.oathOtpService.get()).verifyToken(unverifiedOtp.rawValue()); decompiled/com/airlock/iam/flow/shared/domain/model/oath/OathOtpActivationStepSession.java:32: return new OathOtpActivationStepSession(values.transformOptional("credData", OtpCredBeanData::deserialize)); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:331: stepSession.setOnlineSession(deferredAnswer.sessionId(), Airlock2FAFactor.ONLINE_QR_CODE); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:355: authAnswer.getSessionId(), decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:482: stepSession.setOnlineSession(answer.getSessionId(), Airlock2FAFactor.ONE_TOUCH); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:483: stepSession.setOfflineSession(answer.getOfflineSessionId()); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:489: stepSession.setOnlineSession(answer.getSessionId(), Airlock2FAFactor.ONE_TOUCH); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:493: stepSession.setOnlineSession(answer.sessionId(), Airlock2FAFactor.MOBILE_ONLY); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:500: stepSession.setOfflineSession(answer.getSessionId()); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:522: return this.failDueToMissingOfflineSessionId(); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:531: .validateOfflineQrCode(stepSession.getAccountIdOrThrow(), stepSession.getOfflineSessionOrThrow().getSessionId(), code); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:589: return this.failDueToMissingOnlineSessionId(); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:929: .abortTransaction(session.getAccountIdOrThrow(), session.getOfflineSessionOrThrow().getSessionId()); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:942: .abortTransaction(session.getAccountIdOrThrow(), session.getOnlineSessionOrThrow().getSessionId()); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:963: private AuthenticationStepResult failDueToMissingOfflineSessionId() { decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepImpl.java:967: private AuthenticationStepResult failDueToMissingOnlineSessionId() { decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:27:import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FASessionId; decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:118: public void setOnlineSession(Airlock2FASessionId sessionId, Airlock2FAFactor factor) { decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:121: Airlock2FAOnlineApprovalSession.onlineApprovalSession(new Airlock2FAFuturaeAuthSession(this.accountId.get(), sessionId, factor)) decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:141: public void setOfflineSession(Airlock2FASessionId sessionId) { decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:143: this.offlineSession = Optional.of(new Airlock2FAFuturaeAuthSession(this.accountId.get(), sessionId, Airlock2FAFactor.OFFLINE_QR_CODE)); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:257: Optional sessionId = this.onlineSession decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:258: .map(online -> online.getSession().getSessionId()) decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:259: .or(() -> this.offlineSession.map(Airlock2FAFuturaeAuthSession::getSessionId)); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:260: Optional fallbackSessionId = this.offlineSession decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:262: .map(Airlock2FAFuturaeAuthSession::getSessionId); decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:265: .withSessionIdIfPresent(sessionId) decompiled/com/airlock/iam/flow/shared/domain/model/airlock2fa/Airlock2FAApprovalStepSession.java:266: .withFallbackSessionIdIfPresent(fallbackSessionId); decompiled/com/airlock/iam/flow/shared/domain/model/vasco/VascoOtpCheckingStepImpl.java:35: OtpVerificationService.OtpVerificationResult result = ((OtpVerificationService)this.service.get()).verifyOtp(otp); decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:4:import com.airlock.iam.common.domain.service.SessionIdService; decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:9:import com.airlock.iam.flow.shared.application.configuration.processor.RenewSessionIdProcessorConfig; decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:12:@LogicForConfig(RenewSessionIdProcessorConfig.class) decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:13:public class RenewSessionIdProcessor implements FlowProcessor { decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:14: private final SessionIdService sessionIdService; decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:17: public RenewSessionIdProcessor(SessionIdService sessionIdService) { decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:18: this.sessionIdService = sessionIdService; decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:23: this.forceNewSessionIdIfNecessary(initResult, currentStep); decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:29: this.forceNewSessionIdIfNecessary(result, currentStep); decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:33: private void forceNewSessionIdIfNecessary(StepResult result, FlowStep currentStep) { decompiled/com/airlock/iam/flow/shared/domain/model/processor/RenewSessionIdProcessor.java:35: this.sessionIdService.forceNewSessionId(); decompiled/com/airlock/iam/flow/shared/domain/model/newdevice/LoginFromNewDeviceCookieName.java:7:public record LoginFromNewDeviceCookieName(@NonNull String name) { decompiled/com/airlock/iam/flow/shared/domain/model/newdevice/LoginFromNewDeviceCookieName.java:13: public LoginFromNewDeviceCookieName { decompiled/com/airlock/iam/flow/shared/domain/model/newdevice/LoginFromNewDeviceSettings.java:7: @NonNull LoginFromNewDeviceCookieName cookieName, @NonNull LoginFromNewDeviceValidity validity, @NonNull LoginFromNewDeviceEncryptionKey encryptionKey decompiled/com/airlock/iam/flow/shared/domain/model/newdevice/LoginFromNewDeviceSettings.java:11: if (cookieName == null) { decompiled/com/airlock/iam/flow/shared/domain/model/newdevice/LoginFromNewDeviceSettings.java:12: throw new NullPointerException("cookieName is marked non-null but is null"); decompiled/com/airlock/iam/flow/shared/domain/model/cronto/CrontoActivationStepImpl.java:102: .verifyActivationOtp(((CrontoActivationStepSession)this.stepSession.get()).getActivationSession().orElseThrow(), otp); decompiled/com/airlock/iam/flow/shared/domain/model/session/ProcessedRemovedRolesAttribute.java:36: public static ProcessedRemovedRolesAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/session/SuccessfulAuthenticationTimestamp.java:16: private static final String DESERIALIZE_ERROR_MESSAGE = "Trying to deserialize invalid authentication time attribute"; decompiled/com/airlock/iam/flow/shared/domain/model/session/SuccessfulAuthenticationTimestamp.java:40: public static SuccessfulAuthenticationTimestamp deserializeSessionAttribute(@NonNull Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/session/SuccessfulAuthenticationTimestamp.java:47: .orElseThrow(() -> new FailureException("Trying to deserialize invalid authentication time attribute")); decompiled/com/airlock/iam/flow/shared/domain/model/session/SuccessfulAuthenticationTimestamp.java:55: throw new FailureException("Trying to deserialize invalid authentication time attribute", e); decompiled/com/airlock/iam/flow/shared/domain/model/session/PublicFlowsCompletedInformation.java:50: public static PublicFlowsCompletedInformation deserializeSessionAttribute(Map values) { decompiled/com/airlock/iam/flow/shared/domain/model/session/PublicFlowsCompletedInformation.java:54: deserializeTags(values.get("tags"), mapifier) decompiled/com/airlock/iam/flow/shared/domain/model/session/PublicFlowsCompletedInformation.java:58: private static Set deserializeTags(String tagString, TagMapifier demapifier) { decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:4:import com.airlock.iam.authentication.domain.model.rememberme.RememberMeCookie; decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:28: RememberMeCookie.RememberMeCookieBuilder provideRememberMeCookieBuilder(RememberMeConfig config, ContextPath contextPath) { decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:29: return RememberMeCookie.builder() decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:30: .name(config.getCookieName()) decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:31: .domain(config.getCookieDomain()) decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/RememberMeModule.java:32: .path(config.getCookiePath(contextPath.getPath())) decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:6:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:17: private final Supplier sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:27: Supplier sessionId, decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:35: this.sessionId = sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:45: public static FlowBasedIamSession createFreshIamSession(Supplier sessionId) { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:47: sessionId, decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:58: SessionId sessionId, SessionStateId sessionStateId, SessionNonces nonces, ConfigurationContext context, LazyUserSession userSession decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:60: return new FlowBasedIamSession(() -> sessionId, sessionStateId, Optional.of(nonces), Optional.of(context), userSession, false, true); decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:63: public static FlowBasedIamSession createRestoredFromTicket(Supplier sessionId, ConfigurationContext context, LazyUserSession userSession) { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:65: sessionId, SessionStateId.generateStateRepositoryKey(), Optional.of(SessionNonces.newSessionNonces()), Optional.of(context), userSession, true, true decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:69: public static FlowBasedIamSession createIamSessionForLockNotAcquired(Supplier sessionId, SessionStateId sessionStateId) { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:70: return new FlowBasedIamSession(sessionId, sessionStateId, Optional.empty(), Optional.empty(), LazyUserSession.createUnsuppliable(), false, false); decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:79: this.sessionId, this.sessionStateId, this.nonces, this.configurationContext, LazyUserSession.createUnsuppliable(), this.unpersisted, false decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:94: public SessionId sessionId() { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:95: return this.sessionId.get(); decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:121: public Supplier getSessionIdSupplier() { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:122: return this.sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:126: public Supplier getSessionId() { decompiled/com/airlock/iam/flow/shared/domain/model/session/FlowBasedIamSession.java:127: return this.sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/password/PasswordFlowSessionAttribute.java:79: public static PasswordFlowSessionAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/valueprovider/HttpRequestInformationValueMapProvider.java:9:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/flow/shared/domain/model/valueprovider/HttpRequestInformationValueMapProvider.java:24: private final Provider sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/valueprovider/HttpRequestInformationValueMapProvider.java:32: Provider sessionId, decompiled/com/airlock/iam/flow/shared/domain/model/valueprovider/HttpRequestInformationValueMapProvider.java:38: this.sessionId = sessionId; decompiled/com/airlock/iam/flow/shared/domain/model/valueprovider/HttpRequestInformationValueMapProvider.java:46: map.put("session-id", ((SessionId)this.sessionId.get()).id()); decompiled/com/airlock/iam/flow/shared/domain/model/attributes/AuthenticationAuditTokenUserSessionFlowAttribute.java:45: public static AuthenticationAuditTokenUserSessionFlowAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/attributes/AuthTokenIdFlowSessionAttribute.java:30: public static AuthTokenIdFlowSessionAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/attributes/UiTenantIdAttribute.java:37: public static UiTenantIdAttribute deserializeSessionAttribute(Map rawValues) { decompiled/com/airlock/iam/flow/shared/domain/model/attributes/UiTenantIdAttribute.java:39: Optional.ofNullable(rawValues.get("uiTenantId")).map(UiTenantId::new).orElseThrow(() -> new FailureException("Failed to deserialize uiTenantId")) decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerificationStepImpl.java:144: public AuthenticationStepResult verifyEmailOtp(UnverifiedOtp otp) { decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerificationStepImpl.java:152: .verify(otp, OtpEqualityStrategy.equalityStrategy(!this.settings.isOtpCaseSensitive()))) { decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerificationStepImpl.java:166: LOG.info("User " + this.quotedName() + " failed to verify email address, no further attempts left"); decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerificationStepImpl.java:172: + " failed to verify email address, remaining attempts: " decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerificationStep.java:12: StepResult verifyEmailOtp(UnverifiedOtp var1); decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerification.java:16: public FlowResult verifyEmailOtp(UnverifiedOtp otp) { decompiled/com/airlock/iam/flow/shared/domain/model/email/EmailVerification.java:17: return this.flowProvider.getCurrentOrStartNew().execute(step -> step.verifyEmailOtp(otp), EmailVerificationStep.class); decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoCheckingStepImpl.java:196: public AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse authenticatorResponse) { decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoCheckingStepImpl.java:199: .verifyFidoResponse(((FidoCheckingStepSession)this.stepSession.get()).getChallenge(), fidoUser, authenticatorResponse); decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoRegistrationStepImpl.java:144: public StepResult verify(FidoAuthenticatorUnverifiedAttestationResponse authenticatorResponse) { decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoRegistrationStepImpl.java:147: .verifyAuthenticatorAttestation(((FidoRegistrationStepSession)this.stepSession.get()).retrieveAndDeleteChallenge(), authenticatorResponse); decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoNoAttestationVerifier.java:16: public boolean verify(FidoAttestationObject attestationObject) { decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoCheckingStep.java:11: AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse var1); decompiled/com/airlock/iam/flow/shared/domain/model/fido/FidoRegistrationStep.java:13: StepResult verify(FidoAuthenticatorUnverifiedAttestationResponse var1); decompiled/com/airlock/iam/flow/shared/domain/model/step/oauth2/OAuth2AuthorizationVerifyingFlowStep.java:12: StepResult verifyAuthorizationResponse(QueryString var1); decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/ReCaptchaModule.java:49: return new CaptchaValidationServiceImpl(restClient(config), "/recaptcha/api/siteverify"); decompiled/com/airlock/iam/flow/shared/domain/model/step/mtan/MtanVerificationStep.java:14: StepResult verifyOtp(UnverifiedOtp var1); decompiled/com/airlock/iam/flow/shared/domain/model/step/mtan/MtanVerificationStep.java:16: StepResult verifyIak(Iak var1); decompiled/com/airlock/iam/flow/shared/domain/model/emailotp/EmailOtpCheckingStepImpl.java:134: .verify(otp, OtpEqualityStrategy.equalityStrategy(((EmailOtpAuthenticationStepSettings)this.settings.get()).ignoreCase()))) { decompiled/com/airlock/iam/flow/shared/domain/model/emailotp/EmailOtpCheckingStepImpl.java:149: this.logger.log(this.userId(), "Failed to verify email OTP, no further attempts left"); decompiled/com/airlock/iam/flow/shared/domain/model/emailotp/EmailOtpCheckingStepImpl.java:152: this.logger.log(this.userId(), "Failed to verify email OTP"); decompiled/com/airlock/iam/flow/shared/domain/service/oath/FlowAttributeOathOtpPersistingService.java:27: OtpCredBeanData data = OtpCredBeanData.deserialize(credential.getInitializedCurrent().getStringData()); decompiled/com/airlock/iam/flow/shared/domain/service/oath/OathOtpActivationService.java:80: public TokenVerifierResponse verifyToken(String token) { decompiled/com/airlock/iam/flow/shared/domain/service/oath/OathOtpActivationService.java:96: LOG.warn(EDefaultLogType.GENERIC_LOG_TYPE, "Could not verify token", e); decompiled/com/airlock/iam/flow/shared/domain/service/oath/OathOtpActivationService.java:124: OtpCredBeanData otp = OtpCredBeanData.deserialize(credBean.getInitializedCurrent().getStringData()); decompiled/com/airlock/iam/flow/shared/domain/service/oath/OathOtpActivationService.java:128: otp.decryptSharedSecret(((OathOtpSettings)this.oathOtpSettings.get()).getPassword()) decompiled/com/airlock/iam/flow/shared/domain/service/oath/OathOtpActivationService.java:135: LOG.warn(EDefaultLogType.GENERIC_LOG_TYPE, "Could not decrypt existing OATH OTP secret for user " + LogUtil.logSafeQuote(this.userId().getValue())); decompiled/com/airlock/iam/flow/shared/domain/service/otp/TokenVerifierAdapter.java:43: public OtpVerificationService.OtpVerificationResult verifyOtp(UnverifiedOtp otp) { decompiled/com/airlock/iam/flow/shared/domain/service/otp/TokenVerifierAdapter.java:52: .verifyToken(((TokenVerifier)this.verifier.get()).createNewSession(), userId.getValue(), otp.rawValue()); decompiled/com/airlock/iam/flow/shared/domain/service/otp/OtpVerificationService.java:8: OtpVerificationService.OtpVerificationResult verifyOtp(UnverifiedOtp var1); decompiled/com/airlock/iam/flow/shared/domain/service/cronto/CrontoSelfManagementService.java:20: StartDeviceActivationResult verifyActivationOtp(CrontoActivationSession var1, CrontoOtp var2); decompiled/com/airlock/iam/flow/shared/domain/service/cronto/CrontoSelfManagementServiceImpl.java:93: public StartDeviceActivationResult verifyActivationOtp(CrontoActivationSession activationSession, CrontoOtp otp) { decompiled/com/airlock/iam/flow/shared/domain/service/cronto/CrontoSelfManagementServiceImpl.java:98: ((CrontoHandler)this.crontoHandler.get()).verifyActivationResponse1(activationSession, otp); decompiled/com/airlock/iam/flow/shared/domain/service/cronto/CrontoSelfManagementServiceImpl.java:125: ((CrontoHandler)this.crontoHandler.get()).verifyActivationResponse1(session, otp); decompiled/com/airlock/iam/flow/shared/domain/service/cronto/CrontoSelfManagementServiceImpl.java:156: ((CrontoHandler)this.crontoHandler.get()).verifyActivationResponse2(activationSession, enteredCode); decompiled/com/airlock/iam/flow/shared/domain/service/session/ReadOnlyIamSessionDataFactoryImpl.java:20: session.getSessionIdSupplier(), decompiled/com/airlock/iam/flow/shared/domain/service/password/PasswordChangeService.java:44: .log("Password change for user '%s' failed because decryption of a password failed", new Object[]{((UserPrincipal)this.principal.get()).getName()}); decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:4:import com.airlock.iam.common.domain.model.jwt.signature.JsonWebSignatureToken; decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:5:import com.airlock.iam.common.domain.model.jwt.signature.JwsAlgorithmEc; decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:59: LOG.info(String.format("Device token JWT verification failed for user \"%s\": Invalid JWT signature or device token invalid.", username)); decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:65: "Successfully verified device token JWT signature for user \"%s\" and device ID \"%s\" (using challenge \"%s\").", decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:109: return jwk.verifier().map(v -> v.verify(jwsToken)).orElse(false); decompiled/com/airlock/iam/flow/shared/domain/service/devicetoken/DeviceTokenAuthenticationService.java:120: "Device token JWT verification failed: Invalid JWT signature algorithm \"" decompiled/com/airlock/iam/flow/shared/domain/service/mtan/MtanOtpCheckingServiceImpl.java:100: .verify(otp, OtpEqualityStrategy.equalityStrategy(!this.settings.isOtpCaseSensitive()))) { decompiled/com/airlock/iam/flow/infrastructure/serialization/StateMachineSerializerImpl.java:30: public FlowStateMachine deserializeStateMachine(String serialized, InternalFlowSession flowSession) { decompiled/com/airlock/iam/flow/infrastructure/serialization/NoStateMachineSerializer.java:13: public FlowStateMachine deserializeStateMachine(String serialized, InternalFlowSession flowSession) { decompiled/com/airlock/iam/flow/infrastructure/serialization/StateMachineSerializer.java:9: FlowStateMachine deserializeStateMachine(String var1, InternalFlowSession var2); decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/LoginappWafTagTimeoutModule.java:5:import com.airlock.iam.flow.shared.application.service.tag.ControlCookieTagTimeoutStarter; decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/LoginappWafTagTimeoutModule.java:6:import com.airlock.iam.flow.shared.application.service.tag.EnvCookieWafTagTimeoutExpiry; decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/LoginappWafTagTimeoutModule.java:11: this.bind(WafTagTimeoutStarter.class).to(ControlCookieTagTimeoutStarter.class); decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/LoginappWafTagTimeoutModule.java:13: this.bind(WafTagTimeoutExpiry.class).to(EnvCookieWafTagTimeoutExpiry.class); decompiled/com/airlock/iam/flow/domain/model/statemachine/runtime/StateMachineControllerImpl.java:111: this.verifyNoUnconsumedRedFlags(); decompiled/com/airlock/iam/flow/domain/model/statemachine/runtime/StateMachineControllerImpl.java:222: private void verifyNoUnconsumedRedFlags() { decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/response/my/MyEmailChangeData.java:12: @Schema(description = "The context of the change to be sent when verifying the change.") decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/response/my/MyCrontoDeviceActivationChallengeData.java:17: @Schema(description = "The context of the change to be sent when verifying the change.") decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/response/my/MyMtanTokenNumberChangeData.java:10: @Schema(description = "The context of the change to be sent when verifying the change.") decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/request/EmailVerificationRequest.java:14: @Schema(description = "The verification context generated by the server to verify the email change.") decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/request/cronto/CrontoCompleteDeviceActivationRequest.java:18: @Schema(description = "The verification context generated by the server to verify the new Cronto device.") decompiled/com/airlock/iam/login/rest/infrastructure/transfer/shared/request/mtan/MtanNumberChangeVerificationRequest.java:14: @Schema(description = "The verification context generated by the server to verify the number change.") decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserCrontoSelfServiceResource.java:273: description = "> [!caution]\n> This endpoint is deprecated and replaced by the protected self-service flow functionality. See\n/protected/self-service/cronto/activation/complete.\n

Completes adding a new Cronto Device.

\n

Adds a new Cronto device by verifying the OTP the user has extracted from the cryptogram he has received\nfrom the prior POST to cronto/devices/activation/start.

\n
The attributes of the added Cronto device.
", decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserMtanSelfServiceResource.java:178: description = "If the change was initiated and an OTP was sent to verify the change.", decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserMtanSelfServiceResource.java:219: description = "> [!caution]\n> This endpoint is deprecated and replaced by the protected self-service flow functionality. See\n/protected/self-service/mtan/token/edit.\n

Initiates a phone number change for an mTAN token.

\n

If the server responds with 200 OK, an OTP is sent to the user's existing number.\nThe OTP together with the context that is returned within the response must be\nsent when calling '/verify-number-change' in order for the change to become effective.

\n
The response of the change.
", decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserMtanSelfServiceResource.java:297: @Path("/{mtanId}/verify-number-change") decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserMtanSelfServiceResource.java:301: public Response verifyMtanNumberChange( decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserMtanSelfServiceResource.java:302: @Parameter(description = "The ID of the mTAN token for which to verify the phone number change.") @PathParam("mtanId") String mtanId, decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/UserDeviceTokenResource.java:143: description = "Register device token.\n

\nRegister a new device token by providing a JSON Web Key (JWK) public key and optionally a label and/or a serial ID of the device.\n

\n

\nThe public key is represented as specified in JWK (RFC7517). Currently elliptic curve signatures (keys of type \"EC\") are supported.
\nThe following attributes are expected in the public key attribute (according to the JWK specification):\n

    \n
  • \"crv\" - the elliptic curve. Supported values are:\n
      \n
    • \"P-256\": for ES256 signatures
    • \n
    • \"P-256K\": for ES256K signatures
    • \n
    • \"P-384\": for ES384 signatures
    • \n
    • \"P-521\": for ES512 signatures
    • \n
    \nPlease note: During registration all four values are always allowed, but for the other use cases of device tokens (e.g. authentication)\nit is possible to restrict (in the IAM configuration) which curves are allowed.
  • \n
  • \"x\" - the x coordinate of the base point.
  • \n
  • \"y\" - the y coordinate of the base point.
  • \n
  • \"kty\" - the key type - must be \"EC\"
  • \n
  • \"kid\" - a key identifier (optional)
  • \n
\n

\n
A device token to be used during authentication.
", decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/CrontoActivationSessionExternalizer.java:61: return this.deserializeVascoCrontoSession(userId, account, content); decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/CrontoActivationSessionExternalizer.java:63: return this.deserializeCrontoEngineSession(userId, account, content); decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/CrontoActivationSessionExternalizer.java:113: private CrontoActivationSession deserializeVascoCrontoSession( decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/CrontoActivationSessionExternalizer.java:151: private CrontoActivationSession deserializeCrontoEngineSession( decompiled/com/airlock/iam/login/rest/infrastructure/resource/prot/CrontoActivationSessionExternalizer.java:176: Optional content = this.externalizationService.verify(context); decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/CustomSessionIdClaimExtractorModule.java:5:import com.airlock.iam.oauth2.application.configuration.claims.CustomSessionIdClaimConfig; decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/CustomSessionIdClaimExtractorModule.java:11:@ModuleForConfig(CustomSessionIdClaimConfig.class) decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/CustomSessionIdClaimExtractorModule.java:12:public final class CustomSessionIdClaimExtractorModule extends PrivateModule { decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/CustomSessionIdClaimExtractorModule.java:15: String provideClaimName(CustomSessionIdClaimConfig config) { decompiled/com/airlock/iam/login/rest/infrastructure/factory/shared/CustomSessionIdClaimExtractorModule.java:21: Optional provideClaimCondition(CustomSessionIdClaimConfig config) { decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:40: values.simpleValue("configHashes", MultiFlowSessionMapifierImpl::deserializeFlowConfigHashes), decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:41: values.simpleValue("type", MultiFlowSessionMapifierImpl::deserializeMultiFlowType), decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:42: values.simpleValue("flowId", MultiFlowSessionMapifierImpl::deserializeFlowId), decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:51: private static MultiFlowType deserializeMultiFlowType(Object value) { decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:59: private static FlowId deserializeFlowId(Object value) { decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:67: private static FlowConfigHash deserializeFlowConfigHash(Object flowConfigHash) { decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:71: private static List deserializeFlowConfigHashes(Object configHashes) { decompiled/com/airlock/iam/login/infrastructure/session/MultiFlowSessionMapifierImpl.java:72: return ((List)configHashes).stream().map(MultiFlowSessionMapifierImpl::deserializeFlowConfigHash).toList(); decompiled/com/airlock/iam/login/app/misc/LogTypes.java:10: public static final ELogType SET_AIRLOCK_CONTROL_COOKIE = SAT_FACTORY.create(1L, "Setting Airlock control cookie."); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3GrantSettingsFactory.java:4:import com.airlock.iam.common.domain.model.jwt.signature.JwsVerifierImpl; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3GrantSettingsFactory.java:6:import com.airlock.iam.common.domain.service.jwt.signature.JwsVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3GrantSettingsFactory.java:7:import com.airlock.iam.common.domain.service.jwt.signature.JwtSignatureVerifierImpl; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:4:import com.airlock.iam.common.domain.service.jwt.signature.JwtSignatureVerifierImpl; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:7:import com.airlock.iam.oauth2.application.configuration.signature.JwtAccessTokenPrivateKeySignature; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:18: JwtAccessTokenPrivateKeySignature signature = config.getSignature(); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:19: SignatureVerificationInformation signatureVerificationInformation = signature.getSignatureVerificationInformation(); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:20: JwtSignatureVerifierImpl signatureVerifier = JwtSignatureVerifierImpl.certificateBuilder() decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:21: .signatureAlgorithm(signatureVerificationInformation.getAlgorithm()) decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:22: .certificate(signatureVerificationInformation.getCertificate()) decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/v3/settings/OAuth2V3ClientCredentialsGrantSettingsFactory.java:26: .signatureVerifier(signatureVerifier) decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/OpenIDConnectAuthzCodeExchangeRequestHandler.java:152: return new OAuth2TokenInformation(idToken.getUserId().getValue(), idToken.getScopes().scopesAsSet(), idToken.getClientId(), idToken.getSessionId()); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/OpenIDConnectAuthzCodeExchangeRequestHandler.java:164: .sessionId(idToken.getSessionId()) decompiled/com/airlock/iam/login/app/misc/oauth2/provider/servlet/OpenIDConnectAuthzCodeExchangeRequestHandler.java:165: .oidcUserAgentSessionId(idToken.getOidcUserAgentSessionId()) decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:10:import com.airlock.iam.oauth2.application.configuration.signature.PrivateKeyJwtSignatureConfig; decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:29: List signatureVerificationInformations = new ArrayList<>(); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:30: idTokenSignerInfo(settings).ifPresent(signatureVerificationInformations::add); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:31: hybridFlowIdTokenSignerInfo(settings).ifPresent(signatureVerificationInformations::add); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:32: authorizationCodeGrantJWTAccessTokenInfo(settings).ifPresent(signatureVerificationInformations::add); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:33: hybridFlowJWTAccessTokenInfo(settings).ifPresent(signatureVerificationInformations::add); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:34: clientCredentialsGrantJWTAccessTokenInfo(settings).ifPresent(signatureVerificationInformations::add); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:35: signatureVerificationInformations.addAll(tokenExchangeGrantJWTAccessTokenInfo(settings)); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:36: return DefaultJWKSSettings.jwksSettings(signatureVerificationInformations); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:63: .flatMap(AccessTokenFormatConfig::signatureVerificationInformation); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:71: .flatMap(AccessTokenFormatConfig::signatureVerificationInformation); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:79: .flatMap(OpenIDConnectIDTokenSigner::signatureVerificationInformation); decompiled/com/airlock/iam/login/app/misc/oauth2/provider/settings/OAuth2AsCentricJWKSSettingsFactory.java:88: .flatMap(OpenIDConnectIDTokenSigner::signatureVerificationInformation); decompiled/com/airlock/iam/login/app/misc/oauth2/introspection/config/BasicAuthTokenIntrospectionConfig.java:39: public static void verifyCharset(PluginConfiguration config, ConfigurationEnvironment env, ConfigurationContext context, Environment validationEnvironment) throws ConfigurationException { decompiled/com/airlock/iam/login/app/misc/CrontoOnlinePostActivationServlet.java:52: vascoCrontoHandler.verifyActivationResponse2(session, new CrontoOtp(otp)); decompiled/com/airlock/iam/login/app/misc/CrontoOnlinePostActivationServlet.java:75: LOG.error(com.airlock.iam.elog.api.LogTypes.ILLEGAL_ARGUMENT, "Failure while verifying response message 2 failed: " + e.getMessage()); decompiled/com/airlock/iam/login/app/misc/CrontoOnlinePostActivationServlet.java:107: vch.getVascoHandler().decryptBlobData(activationToken.getOtpBlob()), "serial", activationToken.getCryptoApplIndex() decompiled/com/airlock/iam/login/app/misc/CrontoOnlinePostActivationServlet.java:121: vch.getVascoHandler().decryptBlobData(activationToken.getDelegate().getTokenData()), "serial", activationToken.getCryptoApplIndex() decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:165: private String sessionIdleTimeout; decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:166: private static final String SESSION_TIMEOUT_PROPERTY = "sessionIdleTimeout"; decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:327: String sessionIdleTimeout, decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:358: this.sessionIdleTimeout = sessionIdleTimeout; decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:387: public Duration getSessionIdleTimeout() { decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:388: return new DurationParser(this.sessionIdleTimeout).getDuration(); decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:715: config, "sessionLifetime", "Session Lifetime", "sessionIdleTimeout", "Session Idle Timeout", env, context decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:717: DurationValidator.validateDurationMinValueIfSet(config, "sessionIdleTimeout", Duration.ofSeconds(10L), env, context); decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:819: private String sessionIdleTimeout; decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:928: public Loginapp.LoginappBuilder sessionIdleTimeout(String sessionIdleTimeout) { decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:929: this.sessionIdleTimeout = sessionIdleTimeout; decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:1082: this.sessionIdleTimeout, decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:1133: + ", sessionIdleTimeout=" decompiled/com/airlock/iam/login/app/misc/configuration/Loginapp.java:1134: + this.sessionIdleTimeout decompiled/com/airlock/iam/login/app/misc/configuration/saml/SamlXmlSignatureProvider.java:21:@Plugin(description = "SAML2 Signature Provider for XML signatures using a keystore on the file system.", displayName = "SAML XML Signature Provider") decompiled/com/airlock/iam/login/app/misc/configuration/saml/SamlXmlSignatureProvider.java:26: description = "The keystore used for SAML2 XML signatures and encryption.", decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/oauth2/OpenIdConnectAuthorizationCodeGrantConfig.java:11:import com.airlock.iam.oauth2.application.configuration.openid.signature.OpenIDConnectIDTokenNoSignatureSigner; decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/oauth2/OpenIdConnectAuthorizationCodeGrantConfig.java:73: description = "

Proof Key for Code Exchange by OAuth 2.0 Public Clients (RFC 7636)

It is strongly recommended to use PKCE in setups involving native mobile apps (see the RFC 8252).

PKCE is always performed if the client starts it; however this property defines the minimum challenge hash method necessary and therefore allows to enforce the usage of PKCE.

If PKCE is required, \"plain\" should only be used if a legacy client doesn't support S256.

The value configured here applies to all clients, however, it's possible to override it in the configuration of each static client.

Background on PKCE:
OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the Authorization Code interception attack. PKCE helps to mitigate this risk through the use of Proof Key for Code Exchange.

This extension utilizes a dynamically created cryptographic random key called \"code verifier\". A unique code verifier is created for every authentication request, and its transformed value, called \"code challenge\", is sent to the authorization server to obtain the Authorization Code. The Authorization Code obtained is later sent to the token endpoint with the \"code verifier\", which allows the server to verify the possession of the \"code verifier\" before issuing an Access Token.

", decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/oauth2/OpenIdConnectAuthorizationCodeGrantConfig.java:393: PluginConfiguration accessTokenSigner = PluginPropertyValueReader.effectivePluginPropertyValue(hybridFlowAccessTokenConfig, "signature", env, context); decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/oauth2/OpenIdConnectAuthorizationCodeGrantConfig.java:396: "signature", hybridFlowAccessTokenConfig, env, context, "OpenID Connect Hybrid Flow Access Tokens must be signed." decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/oauth2/OAuth2AuthorizationCodeGrantConfig.java:64: description = "

Proof Key for Code Exchange by OAuth 2.0 Public Clients\n(RFC 7636)

\n

It is strongly recommended to use PKCE in setups involving native mobile apps\n(see the RFC 8252).

\n

PKCE is always performed if the client starts it; however this property defines the minimum challenge\nhash method necessary and therefore allows to enforce the usage of PKCE.

\n

If PKCE is required, \"plain\" should only be used if a legacy client doesn't support S256.

\n

The value configured here applies to all clients, however, it's possible to override it in the\nconfiguration of each static client.

\n

Background on PKCE:
\nOAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the Authorization Code\ninterception attack. PKCE helps to mitigate this risk through the use of Proof Key for Code Exchange\n(pronounced \"pixy\").

\n

This extension utilizes a dynamically created cryptographic random key called \"code verifier\". A unique\ncode verifier is created for every authorization request, and its transformed value, called \"code challenge\",\nis sent to the authorization server to obtain the Authorization Code. The Authorization Code obtained is later\nsent to the token endpoint with the \"code verifier\", which allows the server to verify the possession of the\n\"code verifier\" before issuing an Access Token.

", decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/OAuth2ASConfigClientSecretLengthValidator.java:3:import com.airlock.iam.oauth2.application.configuration.openid.signature.OpenIDConnectIDTokenMACSignatureSigner; decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:5:import com.airlock.iam.common.application.configuration.jwt.signature.JwksSignatureVerifierSettings; decompiled/com/airlock/iam/login/app/misc/configuration/oauth/as/client/OAuth2StaticClientConfig.java:130: description = "The client secret, used for authentication.
\nRequired, for example, if the client secret is used for token endpoint authentication using a post parameter or basic authentication.
\nTo generate a secure secret, the openssl utility can be used, e.g. openssl rand -base64 32.\nIf using an HMAC signature for ID tokens, the client secret length must suffice for the signature algorithm (e.g., 32 bytes for HS256).\n", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/IdPropagationPreparation.java:27: addIfValueNotEmpty(list, "GSID", context.getSessionId().id()); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:5:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:10:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:26: AirlockControlCookie airlockCookie = this.createAirlockCookie(authentee, context); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:27: Cookie cookie = airlockCookie.getControlCookie(this.alConfig.getControlCookieName()); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:28: response.addCookie(cookie); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:31: private AirlockControlCookie createAirlockCookie(Authentee authentee, OneShotContext context) { decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:32: AirlockControlCookie cookie = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:34: cookie.setAddCredentials(this.getRolesToPropagate(authentee)); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:36: cookie.replaceCredentials(this.getRolesToPropagate(authentee)); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:39: cookie.setAuditToken(this.alConfig.getAuditToken().getAuditTokenValue(context.getSessionId().id(), authentee.getName())); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/impl/TargetApplicationBasedAirlockMetaInformation.java:40: return cookie; decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotTargetApplicationConfig.java:29: description = "

Defines how to authenticate HTTP requests based on the original HTTP request sent by the client (provided to IAM in various Airlock Gateway environment cookies).

The following actions are applied for each request:

  1. Credential Extraction: Extract credential from the HTTP request (e.g. a bearer token or a cookie).
  2. Authentication: Call specified authenticator with credential (e.g. verify JWT ticket).
  3. Error handling: If authentication failes, the specified error mapper defines how to respond (e.g. send 401 to client).
  4. Authorization: Assure roles required to access application/services are given after authentication.
  5. ID-Propagation: provide information about authenticated user to target application/service.
  6. Set Airlock Gateway (WAF) roles: provide credentials/roles to Airlock Gateway to allow request to pass to target application/service.

", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotTargetApplicationConfig.java:39: description = "Extracts credential (e.g. basic auth, bearer token, cookie) from the request received from the Airlock Gateway (one-shot flow). The credential serves as input for the authenticator.", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotTargetApplicationConfig.java:46: description = "

Validates the credential from the credential extractor in order to authenticate the HTTP request.

Note:

  • Only non-interactive authentication steps (there is no way to interact with the HTTP client at this point - use the REST authentication API to do so if desired) may be configured.
  • The authenticator must know how to handle the credential type provided by the credential extractor.

A common use-case is to verify JWT tokens issued by an upfront authentication process (as \"Authorization Bearer\" header):

  • Extract bearer token from HTTP header (using the \"HTTP Header Token Extractor (as SSO Credential)\").
  • Authenticate the request using the \"Lookup and Accept Authenticator\" or the \"SSO Credential Authenticator\".

", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotAuthenticationConfig.java:22: description = "

Configures the end-point used to authenticated HTTP requests with the Airlock Gateway (WAF)'s one-shot flow. It can be used, for example, to authenticate stateless REST calls.

The HTTP header of non-authenticated request are sent to this IAM end-point by the Airlock Gateway.
Make sure to use \".../login-oneshot/\" as denied access URL on the corresponding gateway mappings.

This end-point may roughly do the following with the requests:

  • Extract a credential from the HTTP header (e.g. a bearer token or a cookie).
  • Call an Authenticator plugin with the credential (e.g. verify the bearer token).
  • Authenticate the request on the Airlock Gateway and append ID propagation information for the target application/service.
  • Respond as expected by the HTTP client in all cases(e.g. use expected HTTP response code).

All settings are configured in the list of target applications/services (see properties).
The target application/service is selected by the original request by the HTTP client (provided to IAM in various environment cookies).
In case no target application/service matches, the default target application/service is used.

", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotAuthenticationConfig.java:34: description = "

List of target applications/services:

One of the target applications/services is selected by matching the \"URL Pattern\" against URL of the original HTTP request sent by the client (provided to IAM by several environment cookies).

They are matched in the order they are declared and the first matching is used. In case no one matches, the default target application/service is used.

", decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotAuthenticationConfig.java:51: LOG.info(LogTypes.AIRLOCK_ONESHOT, "Cannot determine One-Shot target application, because ENV-cookie values cannot be interpreted. Using default."); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotAuthenticationConfig.java:60: return envValues.getUrlFromAirlockEnvironmentCookie(); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/OneShotAuthenticationConfig.java:62: LOG.warn(LogTypes.AIRLOCK_ONESHOT, "Exception while extracting accessed URL from ENV cookies ", e); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/FailureHttpResponseConfig.java:38: new AirlockAuthWorkflowErrorBehavior(this.workflow, wafConfig.getControlCookieName()) decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenOneShotAuthenticator.java:87: .filter(token -> token.getTokenBinding().map(binding -> this.verifyBoundToken(credential, binding)).orElse(true)); decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenOneShotAuthenticator.java:93: private boolean verifyBoundToken(TokenCredential credential, OAuth2TokenBinding binding) { decompiled/com/airlock/iam/login/app/application/configuration/oauth/OAuth2AccessTokenOneShotAuthenticator.java:102: return this.bindingVerifier.verify(binding, Optional.of(new OAuth2TokenBindingClientCertificateCredential(certificate))); decompiled/com/airlock/iam/login/app/misc/configuration/oneshot/HttpHeaderTokenExtractorConfig.java:27: description = "

Extracts a token from an HTTP header, decodes it using the specified ticket decoder (e.g. JWT) and provides a \"Single-Sign-On-Credential\" to the authenticator.
This extractor can be used to verify JWTs in \"Authorization\" headers (to remove the \"Bearer \"-Prefix from the header value use \"Header Value Conversion Pattern\" and \"Header Value Conversion Replacement\").

This extractor can only be used with authenticators that are able to process Single-Sign-On-Credentials (e.g. the \"SSO Credential Authenticator\").

", decompiled/com/airlock/iam/login/app/misc/configuration/targetapps/GenericTargetApplicationBase.java:78: description = "The type of password encryption used to decrypt this password.
Leave empty if the password is not encrypted (not recommended if the password is read from a context data field).", decompiled/com/airlock/iam/login/app/misc/configuration/targetapps/GenericTargetApplicationBase.java:177: return Optional.of(this.passwordEncryptionMethod.decrypt(readPwd, authentee.getName())); decompiled/com/airlock/iam/login/app/misc/configuration/targetapps/GenericTargetApplicationBase.java:179: LOG.warn(LogTypes.ILLEGAL_ARGUMENT, "Unable to decrypt password: " + e.getMessage(), e); decompiled/com/airlock/iam/login/app/misc/configuration/targetapps/GenericTargetApplicationBase.java:180: throw new IllegalStateException("Unable to decrypt password: " + e.getMessage(), e); decompiled/com/airlock/iam/login/app/misc/config/Configuration.java:122: Config.setInstance(Loginapp.LOGINAPP_CONFIG_IDENTIFIER, configurationContext -> Loginapp.get(configurationContext).getSessionIdleTimeout()); decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:4:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:40: ServletConfigUtils.determineSslSessionId(request, context), decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:43: determineSessionId(request) decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:63: private static SessionId determineSessionId(HttpServletRequest request) { decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:68: return correlationIdService.determineNewSessionId(); decompiled/com/airlock/iam/login/app/misc/OneShotLoginServlet.java:81: AirlockWAFEnvValues wafEnv = new AirlockWAFEnvValues(request.getCookies(), wafConfig); decompiled/com/airlock/iam/login/app/misc/CrontoOnlineInstanceActivationServlet.java:139: crontoHandler.verifyActivationResponse1(crontoActivationSession, new CrontoOtp(deviceCode)); decompiled/com/airlock/iam/login/app/misc/CrontoOnlineInstanceActivationServlet.java:142: LOG.error(com.airlock.iam.elog.api.LogTypes.ILLEGAL_ARGUMENT, "Failed to verify activation challenge 1: " + e.getMessage()); decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:12:import jakarta.servlet.http.Cookie; decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:117: Cookie[] cookies = request.getCookies(); decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:118: if (cookies != null) { decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:119: for (int i = 0; i < cookies.length; i++) { decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:120: Cookie curCookie = cookies[i]; decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:122: "Cookie[" decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:125: + curCookie.getName() decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:127: + curCookie.getValue() decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:129: + curCookie.getDomain() decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:131: + curCookie.getPath() decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:133: + curCookie.getMaxAge() decompiled/com/airlock/iam/login/app/misc/ExceptionWrapperServlet.java:135: + curCookie.getSecure() decompiled/com/airlock/iam/login/app/misc/OneShotLogoutServlet.java:4:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/OneShotLogoutServlet.java:26: AirlockControlCookie ac = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/OneShotLogoutServlet.java:28: ac.forceNewSessionId(); decompiled/com/airlock/iam/login/app/misc/OneShotLogoutServlet.java:29: response.addCookie(ac.getControlCookie(alConfig.get().getControlCookieName())); decompiled/com/airlock/iam/login/app/misc/OneShotLogoutServlet.java:31: OneShotLogoutServlet.class, LogTypes.SET_AIRLOCK_CONTROL_COOKIE, "Setting Airlock control cookie (value): \"" + ac.getCookieValue() + "\"" decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:9:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureAlgorithm; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:10:import com.airlock.iam.core.domain.model.http.signature.verifier.CertificateBasedHttpSignatureVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:11:import com.airlock.iam.core.domain.model.http.signature.verifier.CertificateBasedHttpSignatureVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:12:import com.airlock.iam.core.domain.model.http.signature.verifier.CertificateBasedHttpSignatureVerifierLogger; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:13:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureAlgorithmVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:14:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:45: description = "Verifies the HTTP Signature from the \"Signature\" header of the HTTP request according to Signing HTTP Messages. If valid, extracts the credential according to the configured extractor.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:59: description = "Allows to define verifications on the HTTP signature. The headers parameter defines the signed data and is passed with the request to each of the configured verifications. If any of the verifications fail, the request will be rejected.

This allows to enforce certain data to be included/excluded in the signature.

", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:64: private List signatureHeadersVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:74: description = "How to load the certificate that is used to verify the signature.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:92: description = "The password used verify the authenticity of the trust store.

\tDepending on the keystore type, leaving this property empty (or undefined) has a different effect:\t

    \t\t
  • JKS: the keystore can be opened and used but the integrity of the keystore is not checked.
  • \t\t
  • PKCS12: an error occurs.
  • \t

", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:100: description = "A list of certificate status checkers used to check the revocation status of the HTTP signature verification certificate. If more than one checker is configured, all of them are consulted and the certificate is considered revoked if at least one of them tells so.

Security warning: The revocation status is only checked for the leaf certificate. Issuer certificates are not checked for revocation. If revocation checks for issuer certificates are required, these must be performed by the administrative process that manages the IAM truststore, see property 'Trust Store Path'.

", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:110: description = "Verifies the signature algorithms being used. If not configured, all algorithms are allowed and therefore all supported algorithms that can be used with the certificate's key material will pass the signature verification.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:116: description = "Client credential verification against the used HTTP signature signing certificate. If not configured, no verification of the credential will be performed.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:122: description = "Enables logging of signature verification information. Certificate, algorithm, signing string and the signature will be logged in case the verification was successful. This allows to verify signatures at a later point in time.

Security Warning: Signing strings contain request headers which often contain sensitive information and should therefore not be logged. If this feature is enabled, it is highly recommended that these logs are redirected to a special destination using the Logger Name.

", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:131: List signatureHeadersVerifications, decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:143: this.signatureHeadersVerifications = signatureHeadersVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:174: .signatureHeaderVerifications(this.signatureHeaderVerifierFactories()) decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:178: .certificateBasedHttpSignatureVerifierFactory(this.signatureVerifierFactory()) decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:187: private CertificateBasedHttpSignatureVerifierFactory signatureVerifierFactory() { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:189: CertificateBasedHttpSignatureVerifierLogger logger = this.signatureVerifierLogger(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:191: signingCertificate, HttpSignatureAlgorithm::getSignatureAlgorithm, this.signatureAlgorithmVerifier(), logger decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:195: signingCertificate, HttpSignatureAlgorithm::getSignatureAlgorithm, this.signatureAlgorithmVerifier() decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:200: private CertificateBasedHttpSignatureVerifierLogger signatureVerifierLogger() { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:207: private HttpSignatureAlgorithmVerifier signatureAlgorithmVerifier() { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:219: private List signatureHeaderVerifierFactories() { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:220: return this.signatureHeadersVerifications.stream().map(HttpSignatureHeadersVerifierFactory.class::cast).collect(Collectors.toList()); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:237: private List signatureHeadersVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:270: public HttpSignatureVerificationCredentialExtractorConfig.HttpSignatureVerificationCredentialExtractorConfigBuilder signatureHeadersVerifications( decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:271: List signatureHeadersVerifications decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:273: this.signatureHeadersVerifications = signatureHeadersVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:351: this.signatureHeadersVerifications, decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:369: + ", signatureHeadersVerifications=" decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractorConfig.java:370: + this.signatureHeadersVerifications decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureX509CertificateHeaderLoaderConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.key.HttpSignatureCertificateLoader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureX509CertificateHeaderLoaderConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.key.X509CertificateHeaderLoader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MandatoryHttpSignatureHeadersConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.verifier.AlwaysTrueHttpSignatureHeadersVerifierCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MandatoryHttpSignatureHeadersConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MandatoryHttpSignatureHeadersConfig.java:6:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MandatoryHttpSignatureHeadersConfig.java:7:import com.airlock.iam.core.domain.model.http.signature.verifier.MandatoryHttpSignatureHeaderVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MandatoryHttpSignatureHeadersConfig.java:12:@Plugin(description = "Verifies that the header is included in the signature if the condition is met.", displayName = "Mandatory HTTP Signature Header") decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:3:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:10: private final String alCookieName; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:12: public AirlockAuthWorkflowErrorBehavior(AirlockAuthWorkflowErrorBehavior.AirlockAuthWorkflowAction action, String alCookieName) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:14: this.alCookieName = (String)Preconditions.checkNotNull(alCookieName); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:19: AirlockControlCookie cookie = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:20: this.action.addTo(cookie); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:21: response.addCookie(cookie.getControlCookie(this.alCookieName)); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:27: public void addTo(AirlockControlCookie cookie) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:28: cookie.authFlowContinue(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:33: public void addTo(AirlockControlCookie cookie) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:34: cookie.authFlowFinalResponse(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/error/AirlockAuthWorkflowErrorBehavior.java:38: public abstract void addTo(AirlockControlCookie var1); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/StringHttpSignatureHeader.java:3:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureHeader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:4:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:11: private final String alCookieName; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:13: public BasicAuthErrorMapper(String realm, String alCookieName) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:15: this.alCookieName = (String)Preconditions.checkNotNull(alCookieName); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:34: AirlockControlCookie cookie = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:35: cookie.authFlowFinalResponse(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapper.java:36: response.addCookie(cookie.getControlCookie(this.alCookieName)); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/CertificateSubjectOrganizationIdentifierEqualityCredentialVerifierConfig.java:11: description = "Verifies that the HTTP signature signing certificate's subject organizationIdentifier (oid 2.5.4.97 according to ITU-T Recommendations X.520) equals the client credential certificate's subject organizationIdentifier. The signing certificate must contain an organizationIdentifier in it's Subject Distinguished Name and the credential must be a certificate credential containing an equal organizationIdentifier in it's Subject Distinguished Name or else the verification will fail.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureStaticX509CertificateLoaderConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.key.HttpSignatureCertificateLoader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureStaticX509CertificateLoaderConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.key.X509CertificateFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpRequestHeaderPresentConditionConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpRequestHeaderPresentCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpRequestHeaderPresentConditionConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/RequestTargetHttpSignatureHeader.java:3:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureHeader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersVerifierConfig.java:3:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersVerifierConditionConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeaderConfig.java:3:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureHeader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:96: String alEnvCookiePrefix = this.wafConfig.map(AirlockGatewayConfig::getEnvironmentCookiePrefix).orElse(null); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:97: X509Certificate cert = this.tryCertificateExtraction(request, alEnvCookiePrefix); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:98: String source = StringUtils.isBlank(alEnvCookiePrefix) ? "servlet request" : "environment cookie"; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:107: private X509Certificate tryCertificateExtraction(HttpServletRequest request, String alEnvCookiePrefix) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/ClientCertificateExtractor.java:109: return CertUtils.extractClientCertificateFromRequest(request, alEnvCookiePrefix); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpRequestBodyPresentConditionConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpRequestBodyPresentCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpRequestBodyPresentConditionConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierCondition; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:5:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:6:import com.airlock.iam.core.misc.util.airlock.AirlockEnvCookie; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:56: Optional forwardLocation = AirlockEnvCookie.getUrlFromAirlockEnvironmentCookie(request, this.wafConfig.getEnvironmentCookiePrefix()); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:106: AirlockControlCookie cookie = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:107: cookie.authFlowFinalResponse(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/MsOfbaOneShotAuthenticationWorkflow.java:108: response.addCookie(cookie.getControlCookie(this.wafConfig.getControlCookieName())); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapperFactory.java:21: return new KerberosSpnegoErrorMapper(kerberosService, wafConfig.getControlCookieName()); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:9:import com.airlock.iam.core.domain.model.http.signature.HttpSignature; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:10:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureHeaders; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:11:import com.airlock.iam.core.domain.model.http.signature.key.HttpSignatureCertificateLoaderFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:12:import com.airlock.iam.core.domain.model.http.signature.parser.HttpSignatureParser; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:13:import com.airlock.iam.core.domain.model.http.signature.verifier.CertificateBasedHttpSignatureVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:14:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifierFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:37: private final List signatureHeaderVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:61: this.verifyDigest(request); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:64: X509Certificate certificate = this.verifySignatureAndGetCertificate(request); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:65: this.verifyCredential(credentialInfo, certificate); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:79: private void verifyDigest(HttpRequest request) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:80: if (!this.digestVerifier.verify(request)) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:89: private X509Certificate verifySignatureAndGetCertificate(HttpRequest request) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:90: List signatureHeaders = request.getHeaderValues("Signature"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:91: this.debugLog("Got the following signature headers: " + signatureHeaders); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:92: HttpSignature httpSignature = this.parseHttpSignature(signatureHeaders); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:93: this.verifySignatureHeaders(request, httpSignature.headers()); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:95: this.verifyTrust(signingCertificate); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:96: this.verifySignature(request, httpSignature, signingCertificate); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:100: private HttpSignature parseHttpSignature(List signatureHeaders) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:101: Optional signature = new HttpSignatureParser(signatureHeaders).parseFromSignatureHeader(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:102: if (signature.isPresent()) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:104: return signature.get(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:106: throw new CredentialExtractor.CredentialExtractorException("Could not extract a HTTP signature from the request"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:110: private void verifySignatureHeaders(HttpRequest request, HttpSignatureHeaders headers) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:111: for (HttpSignatureHeadersVerifierFactory verifierFactory : this.signatureHeaderVerifications) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:112: if (!verifierFactory.create(request).verify(headers)) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:126: throw new CredentialExtractor.CredentialExtractorException("Could not load certificate to verify HTTP signature"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:130: private void verifyTrust(X509Certificate certificate) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:131: if (!this.trustedCertificateVerifier.verify(certificate)) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:132: throw new CredentialExtractor.CredentialExtractorException("Certificate to verify the HTTP signature is not trusted"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:138: private void verifySignature(HttpRequest request, HttpSignature httpSignature, X509Certificate signingCertificate) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:139: if (!this.certificateBasedHttpSignatureVerifierFactory.create(signingCertificate).verify(request, httpSignature)) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:146: private void verifyCredential(CredentialInfo credentialInfo, X509Certificate certificate) throws CredentialExtractor.CredentialExtractorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:147: if (!this.certificateBasedCredentialVerifierFactory.create(certificate).verify(credentialInfo.getCredential())) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:148: throw new CredentialExtractor.CredentialExtractorException("Credential verification against the signature certificate failed."); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:163: @NonNull List signatureHeaderVerifications, decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:182: if (signatureHeaderVerifications == null) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:183: throw new NullPointerException("signatureHeaderVerifications is marked non-null but is null"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:209: this.signatureHeaderVerifications = signatureHeaderVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:226: private List signatureHeaderVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:279: public HttpSignatureVerificationCredentialExtractor.HttpSignatureVerificationCredentialExtractorBuilder signatureHeaderVerifications( decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:280: @NonNull List signatureHeaderVerifications decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:282: if (signatureHeaderVerifications == null) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:283: throw new NullPointerException("signatureHeaderVerifications is marked non-null but is null"); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:286: this.signatureHeaderVerifications = signatureHeaderVerifications; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:354: this.signatureHeaderVerifications, decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:372: + ", signatureHeaderVerifications=" decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureVerificationCredentialExtractor.java:373: + this.signatureHeaderVerifications decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpInstanceDigestVerificationConfig.java:30: description = "Enables logging of digest verification information. Successfully verified digests and request body contents will be logged. This allows to verify digests at a later point in time.

Security Warning: Request bodies often contain sensitive information and should therefore not be logged. If this feature is enabled, it is highly recommended that these logs are redirected to a special destination using the Logger Name.

", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:4:import com.airlock.iam.core.misc.util.airlock.AirlockControlCookie; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:12: private final String alCookieName; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:14: public KerberosSpnegoErrorMapper(LegacyKerberosService kerberosService, String alCookieName) { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:16: this.alCookieName = (String)Preconditions.checkNotNull(alCookieName); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:35: AirlockControlCookie cookie = new AirlockControlCookie(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:36: cookie.authFlowFinalResponse(); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/KerberosSpnegoErrorMapper.java:37: response.addCookie(cookie.getControlCookie(this.alCookieName)); decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmWhitelistConfig.java:3:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureAlgorithmVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmWhitelistConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureAlgorithmWhitelistVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmWhitelistConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.verifier.SignatureAlgorithmIdentifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmWhitelistConfig.java:14: description = "The allowed signature algorithms. The value can be provided in any letter case. The format specified by Java is <digest>with<encryption>and<mgf>, where the mgf is optional.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmWhitelistConfig.java:34: SignatureAlgorithmIdentifier.signatureAlgorithmIdentifiers(this.allowedSignatureAlgorithms) decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:158: this.verifyIntegrity(subjectX500Principal, clientsWithSameSubject); decompiled/com/airlock/iam/login/app/application/configuration/psd2/NextGenPsd2CertificateAuthenticator.java:162: private void verifyIntegrity(X500Principal subjectX500Principal, Collection clientsWithSameSubject) throws AuthenticatorException { decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureX509CertificateHttpUrlLoaderConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.key.HttpSignatureCertificateLoader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureX509CertificateHttpUrlLoaderConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.key.X509CertificateHttpUrlLoader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureX509CertificateHttpUrlLoaderConfig.java:16: description = "Loads the certificate for an HTTP signature keyId. The keyId must be an HTTP(S) URL indicating where the certificate is located. The HTTP response body must contain a PEM, DER or base64-encoded DER X.509 certificate. Certificates will be cached in memory, hence once a certificate is loaded it will remain in the cache until IAM is restarted, a configuration is activated or the maximum cache size is reached.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersWhitelistConfig.java:4:import com.airlock.iam.core.domain.model.http.signature.HttpSignatureHeader; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersWhitelistConfig.java:5:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeaderWhitelistVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersWhitelistConfig.java:6:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureHeadersVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersWhitelistConfig.java:13:@Plugin(description = "Verifies that only the whitelisted signature headers are included in the signature.", displayName = "Whitelist HTTP Signature Headers") decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureHeadersWhitelistConfig.java:16: description = "Defines which headers are allowed to be included in the signature. If the signature contains a header that is not whitelisted, the verification fails.", decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureAlgorithmVerifierConfig.java:3:import com.airlock.iam.core.domain.model.http.signature.verifier.HttpSignatureAlgorithmVerifier; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/HttpSignatureCertificateLoaderConfig.java:3:import com.airlock.iam.core.domain.model.http.signature.key.HttpSignatureCertificateLoaderFactory; decompiled/com/airlock/iam/login/app/misc/oneshot/impl/BasicAuthErrorMapperFactory.java:18: return new BasicAuthErrorMapper(this.realm, wafConfig.getControlCookieName()); decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:4:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:21: private final Optional sslSessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:24: private final SessionId sessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:34: @NonNull Optional sslSessionId, decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:37: @NonNull SessionId sessionId decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:43: if (sslSessionId == null) { decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:44: throw new NullPointerException("sslSessionId is marked non-null but is null"); decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:55: if (sessionId == null) { decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:56: throw new NullPointerException("sessionId is marked non-null but is null"); decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:60: this.sslSessionId = sslSessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:63: this.sessionId = sessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:118: public Optional getSslSessionId() { decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:119: return this.sslSessionId; decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:133: public SessionId getSessionId() { decompiled/com/airlock/iam/login/app/misc/oneshot/OneShotContext.java:134: return this.sessionId; decompiled/com/airlock/iam/login/app/misc/util/ServletConfigUtils.java:6:import com.airlock.iam.core.misc.util.airlock.AirlockEnvCookie; decompiled/com/airlock/iam/login/app/misc/util/ServletConfigUtils.java:23: public static Optional determineSslSessionId(HttpServletRequest request, ConfigurationContext context) { decompiled/com/airlock/iam/login/app/misc/util/ServletConfigUtils.java:24: return Optional.ofNullable(ServletUtils.getSslSessionId(request, airlockEnvironmentCookiePrefix(context))); decompiled/com/airlock/iam/login/app/misc/util/ServletConfigUtils.java:39: private static String airlockEnvironmentCookiePrefix(ConfigurationContext context) { decompiled/com/airlock/iam/login/app/misc/util/ServletConfigUtils.java:40: return AirlockEnvCookie.getAirlockEnvironmentCookiePrefix(findGatewayConfig(context).orElse(null)); decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:8:import com.airlock.iam.core.misc.util.airlock.AirlockEnvCookie; decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:32: String airlockEnvironmentCookiePrefix = AirlockEnvCookie.getAirlockEnvironmentCookiePrefix(airlockGatewayConfig); decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:33: if (StringUtils.isNotBlank(airlockEnvironmentCookiePrefix)) { decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:36: "Could not determine the client IP address based on the environment cookie sent from Airlock WAF. Using the client IP address of the peer connected to Airlock IAM instead. The environment cookie prefix in Airlock IAM is \"" decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:37: + airlockEnvironmentCookiePrefix decompiled/com/airlock/iam/login/app/misc/ip/ClientIpAddress.java:38: + "\". There may be the following reasons for the problem: (a) No environment cookies are sent from Airlock WAF. Check settings on Loginapp mapping in the Airlock WAF configuration. (b) The environment cookie prefix in Airlock IAM does not match that of Airlock WAF. (c) The client connects directly to the Loginapp (not via WAF). In this case do not configure an environment cookie prefix in Airlock IAM." decompiled/com/airlock/iam/login/app/infrastructure/factory/oauth2/shared/OAuth2TokenEndpointModule.java:5:import com.airlock.iam.common.domain.service.jwt.signature.JwtSigner; decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/LoginappIamSessionServiceModule.java:79: return StateTimeout.timeout(loginapp.getSessionIdleTimeout(), loginapp.getSessionLifetime()); decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/LoginappStateRepositoryModule.java:22: return new SessionTimeoutSettings(loginapp.getSessionIdleTimeout(), Optional.of(loginapp.getSessionLifetime())); decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/SessionIdModule.java:4:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/SessionIdModule.java:13:public final class SessionIdModule extends PrivateModule { decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/SessionIdModule.java:17: SessionId provideSessionId(Optional iamSession, CorrelationIdService correlationIdService) { decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/SessionIdModule.java:18: return iamSession.map(data -> data.sessionId().get()).orElseGet(correlationIdService::determineNewSessionId); decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/FlowBasedIamSessionModule.java:7:import com.airlock.iam.common.domain.service.SessionIdService; decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/FlowBasedIamSessionModule.java:11:import com.airlock.iam.common.infrastructure.session.SessionIdServiceImpl; decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/FlowBasedIamSessionModule.java:60: this.bind(SessionIdService.class).to(SessionIdServiceImpl.class); decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/FlowBasedIamSessionModule.java:61: this.expose(SessionIdService.class); decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/LoginappGatewaySessionTerminatorEventSubscriberModule.java:6:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/LoginappGatewaySessionTerminatorEventSubscriberModule.java:35: LoginappGatewaySessionTerminatorEventSubscriberConfig config, SessionId currentUserSession decompiled/com/airlock/iam/login/app/infrastructure/factory/shared/LoginappGatewaySessionTerminatorEventSubscriberModule.java:37: return config.isKeepCurrentUserSession() ? new LoginappGatewaySessionTerminatorSessionFilter(currentUserSession) : sessionId -> true; decompiled/com/airlock/iam/login/app/infrastructure/filter/Saml2BlockLegacyOneShotFilter.java:26: this.injectorFactory.getAirlockControlCookieService().terminateAirlockSession(); decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:5:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:8:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:14:import com.airlock.iam.common.infrastructure.factory.AirlockControlCookieServiceModule; decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:67: new AirlockControlCookieServiceModule(), decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:122: public AirlockControlCookieService getAirlockControlCookieService() { decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:123: return (AirlockControlCookieService)this.injector.getInstance(AirlockControlCookieService.class); decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:130: SessionId provideSessionId(Optional metadata, CorrelationIdService correlationIdService) { decompiled/com/airlock/iam/login/app/infrastructure/filter/LoginappServletInjectorFactory.java:131: return metadata.map(ReadOnlyIamSessionData::sessionId).map(Supplier::get).orElseGet(correlationIdService::determineNewSessionId); decompiled/com/airlock/iam/login/app/infrastructure/web/ServletInitializationFilter.java:65: session.setMaxInactiveInterval(Math.toIntExact(Loginapp.get(context).getSessionIdleTimeout().toSeconds())); decompiled/com/airlock/iam/login/app/infrastructure/request/GatewayDetector.java:15: .map(wafConfig -> hasSomeEnvironmentCookies(request, wafConfig)) decompiled/com/airlock/iam/login/app/infrastructure/request/GatewayDetector.java:19: private static boolean hasSomeEnvironmentCookies(HttpServletRequest request, AirlockGatewayConfig wafConfig) { decompiled/com/airlock/iam/login/app/infrastructure/request/GatewayDetector.java:20: return AirlockWAFEnvValues.airlockWAFEnvValues(request.getCookies(), wafConfig).hasEnvironmentCookie(); decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:6:import com.airlock.iam.common.domain.model.jwt.signature.JsonWebSignatureToken; decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:33: description = "

The encryption key (encoded in base64) is required to encrypt sensitive data in cookies or in REST responses.

The openssl tool can be used to generate a random base64 string with 256 bits (32 bytes): openssl rand -base64 32

", decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:42: description = "

The HMAC Key (encoded in base64) is required to sign sensitive data stored in cookies or REST responses.

The openssl tool can be used to generate a random base64 string with 512 bits (64 bytes): openssl rand -base64 64

Security Recommendation: Use an HMAC key length of 512 bit or greater for optimal security with the used HS512 algorithm.

", decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:80: displayName = "Session Cookie SameSite Policy", decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:81: description = "

Specifies the 'SameSite' cookie attribute of the IAM session cookie 'iam-session-id'. The 'Secure' attribute is automatically set based on whether the request was performed using http or https (see exception for 'None' below).

  • Strict: The cookie is not sent in cross-origin requests.
  • Lax: The cookie is sent in some cross-origin requests, such as GET requests.
  • None: The cookie is sent in cross-origin requests. In this case, the 'Secure' Cookie-Attribute is always set, regardless of whether the request was performed using http or https.Use this setting when using SAML2 in combination with cross-domain POST Bindings.
  • No SameSite Attribute: No attribute is set. Browsers apply their default behaviour, usually 'Lax'.
", decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:134: private String getHmacKey() { decompiled/com/airlock/iam/login/app/application/configuration/SecurityConfig.java:147: return JwtKeys.jwtKeys(this.getHmacKey(), this.getEncryptionKey()); decompiled/com/airlock/iam/login/domain/model/fingerprinting/ClientFingerprintingLogoutAction.java:8:import com.airlock.iam.common.domain.service.request.AirlockEnvCookiesInformationService; decompiled/com/airlock/iam/login/domain/model/fingerprinting/ClientFingerprintingLogoutAction.java:17: private final Provider environmentCookieService; decompiled/com/airlock/iam/login/domain/model/fingerprinting/ClientFingerprintingLogoutAction.java:25: Provider environmentCookieService, decompiled/com/airlock/iam/login/domain/model/fingerprinting/ClientFingerprintingLogoutAction.java:31: this.environmentCookieService = environmentCookieService; decompiled/com/airlock/iam/login/domain/model/fingerprinting/ClientFingerprintingLogoutAction.java:46: ? ((AirlockEnvCookiesInformationService)this.environmentCookieService.get()) decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:5:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:9:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:22: private final WafSessionIdRepository wafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:23: private final Provider sessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:29: WafSessionIdRepository wafSessionIdRepository, decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:30: Provider sessionId, decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:34: this.wafSessionIdRepository = wafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:35: this.sessionId = sessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:41: Optional persistedSessionId = this.wafSessionIdRepository.getMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:42: String currentSessionId = ((SessionId)this.sessionId.get()).id(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:43: if (Strings.CS.equals(persistedSessionId.orElse(null), currentSessionId)) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:45: } else if (persistedSessionId.isEmpty() && !this.hasPersistedAdditionalSession(this.config.getLoginSessionContextDataKeys())) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:51: this.wafSessionIdRepository.setMainSessionId(currentSessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:54: this.terminateOldSessions(username, persistedSessionId, sessionContextDataKeys); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:55: this.wafSessionIdRepository.setMainSessionId(currentSessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:56: this.clearPersistedAdditionalSessionIds(sessionContextDataKeys, this.config.getLoginDateContextDataKeys()); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:63: Optional persistedSessionId = this.wafSessionIdRepository.getMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:64: String currentSessionId = ((SessionId)this.sessionId.get()).id(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:65: if (Strings.CS.equals(persistedSessionId.orElse(null), currentSessionId)) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:68: this.clearPersistedSessionId(username); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:69: this.clearPersistedAdditionalSessionIds(sessionContextDataKeys, this.config.getLogoutDateContextDataKeys()); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:73: private void terminateOldSessions(UserId username, Optional persistedSessionId, List sessionContextDataKeys) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:74: List additionalPersistedSessionIds = this.loadAdditionalPersistedSessionIds(sessionContextDataKeys); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:75: if (persistedSessionId.isEmpty() && additionalPersistedSessionIds.isEmpty()) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:79: if (persistedSessionId.isPresent()) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:80: sessionsToBeTerminated.add(persistedSessionId.get()); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:83: sessionsToBeTerminated.addAll(additionalPersistedSessionIds); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:89: return !this.loadAdditionalPersistedSessionIds(sessionContextDataKeys).isEmpty(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:92: private List loadAdditionalPersistedSessionIds(List sessionContextDataKeys) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:96: Optional sessionId = this.wafSessionIdRepository.getAdditionalSessionId(sessionContextDataKey); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:97: if (sessionId.isPresent()) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:98: result.add(sessionId.get()); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:105: private void clearPersistedSessionId(UserId username) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:107: this.wafSessionIdRepository.clearMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:110: private void clearPersistedAdditionalSessionIds(List sessionContextDataKeys, List dateContextDataKeys) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyMultipleExistingSessionsLogic.java:114: this.wafSessionIdRepository.clearAdditionalSessionId(sessionContextDataKeys.get(i), dateContextDataKeys.get(i)); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/IgnoreExistingUserSessionsLogic.java:5:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/IgnoreExistingUserSessionsLogic.java:7:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/IgnoreExistingUserSessionsLogic.java:13: public IgnoreExistingUserSessionsLogic(WafSessionIdRepository wafSessionIdRepository, SessionId sessionId) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/IgnoreExistingUserSessionsLogic.java:14: super(wafSessionIdRepository, sessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/IgnoreExistingUserSessionsLogic.java:18: protected void performAdditionalActionUponChangedSessionId(UserId username, String persistedSessionId, String newSessionId) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:5:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:7:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:16: public DestroyOtherUserSessionLogic(WafSessionIdRepository wafSessionIdRepository, SessionId sessionId, WafSessionTerminator sessionTerminator) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:17: super(wafSessionIdRepository, sessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:22: protected void performAdditionalActionUponChangedSessionId(UserId username, String persistedSessionId, String newSessionId) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/DestroyOtherUserSessionLogic.java:23: this.sessionTerminator.terminateSessions(ImmutableList.of(persistedSessionId)); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:3:import com.airlock.iam.common.application.service.session.AirlockControlCookieService; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:9: private final AirlockControlCookieService airlockControlCookieService; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:13: public WafSessionTerminatorImpl(AirlockControlCookieService airlockControlCookieService, SigningLogger signingLogger) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:14: this.airlockControlCookieService = airlockControlCookieService; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:19: public void terminateSessions(List sessionIds) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:20: this.airlockControlCookieService.terminateGSIDs(sessionIds); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/WafSessionTerminatorImpl.java:21: this.signingLogger.log("Terminating WAF sessions %s.", new Object[]{sessionIds}); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:4:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:7:import com.airlock.iam.login.domain.service.existingsessionbehavior.WafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:14: private final WafSessionIdRepository wafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:15: private final SessionId sessionId; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:19: Optional persistedSessionId = this.wafSessionIdRepository.getMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:20: String currentSessionId = this.sessionId.id(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:21: if (persistedSessionId.isEmpty()) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:28: this.wafSessionIdRepository.setMainSessionId(currentSessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:29: } else if (Strings.CS.equals(persistedSessionId.get(), currentSessionId)) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:32: this.wafSessionIdRepository.setMainSessionId(currentSessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:33: this.performAdditionalActionUponChangedSessionId(username, persistedSessionId.get(), currentSessionId); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:37: protected abstract void performAdditionalActionUponChangedSessionId(UserId var1, String var2, String var3); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:42: Optional persistedSessionId = this.wafSessionIdRepository.getMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:43: if (!persistedSessionId.isEmpty()) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:44: if (Strings.CS.equals(persistedSessionId.get(), this.sessionId.id())) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:45: this.wafSessionIdRepository.clearMainSessionId(); decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:53: public SingleExistingUserSessionBehaviorLogic(WafSessionIdRepository wafSessionIdRepository, SessionId sessionId) { decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:54: this.wafSessionIdRepository = wafSessionIdRepository; decompiled/com/airlock/iam/login/domain/model/existingsessionbehavior/SingleExistingUserSessionBehaviorLogic.java:55: this.sessionId = sessionId; decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:3:import com.airlock.iam.common.domain.model.session.SessionId; decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:10: private final SessionId currentUserSession; decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:12: public LoginappGatewaySessionTerminatorSessionFilter(SessionId currentUserSession) { decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:16: public boolean test(String sessionId) { decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:17: if (this.currentUserSession != null && sessionId.equals(this.currentUserSession.id())) { decompiled/com/airlock/iam/login/domain/model/event/LoginappGatewaySessionTerminatorSessionFilter.java:18: LOG.debug(String.format("Not terminating user's current session with id %s", sessionId)); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:12:public class WafSessionIdPrincipalRepository implements WafSessionIdRepository { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:18: public WafSessionIdPrincipalRepository(Provider userPrincipal, TimeProvider timeProvider, SigningLogger signingLogger) { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:25: public Optional getMainSessionId() { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:30: public void setMainSessionId(String newSessionId) { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:32: this.signingLogger.log("Updating persisted main WAF session of user '%s' to '%s'.", new Object[]{user.getName(), newSessionId}); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:33: user.setLastKnownGlobalSessionID(newSessionId); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:39: public void clearMainSessionId() { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:47: public Optional getAdditionalSessionId(String contextDataKey) { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdPrincipalRepository.java:52: public void clearAdditionalSessionId(String valueContextDataKey, String timestampContextDataKey) { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:5:public interface WafSessionIdRepository { decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:6: Optional getMainSessionId(); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:8: void setMainSessionId(String var1); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:10: void clearMainSessionId(); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:12: Optional getAdditionalSessionId(String var1); decompiled/com/airlock/iam/login/domain/service/existingsessionbehavior/WafSessionIdRepository.java:14: void clearAdditionalSessionId(String var1, String var2); decompiled/com/airlock/iam/login/domain/model/attribute/AdditionalPasswordCheckAttributes.java:47: public static AdditionalPasswordCheckAttributes deserializeSessionAttribute(Map rawValues) {