Patterns Reference
This page lists all configuration patterns that are available in nevisAdmin 4. For each pattern, you find a detailed description, complete with information about each field you can set for the pattern. The text content is a copy of the pattern help texts that appear on the nevisAdmin 4 interface.
Use the right sidebar to browse the patterns in alphabetical order, or your browser's Find function to search for specific terms, pattern categories or plugins, or
Ask our AI Pattern-bot!
Placeholder Values
placeholder:// values are experimental. They are intended for Git deployments where a continuous integration and continuous delivery (CI/CD) process replaces deferred values in generated files before deployment. The pattern generator removes every placeholder:// prefix and preserves all other text unchanged. It does not validate or resolve the value.
These enhancements are available in nevisAdmin 4 Patterns version 9.2605.4 and later in the 9.2605 line, or 9.2611.0 and later in the 9.2611 line. Availability in LTS26 is not yet determined; do not rely on these enhancements in LTS26 until a compatible version is released and documented.
The grammar is:
placeholder://<placeholder-name>
The placeholder name must not contain :, /, ?, or #. The @ delimiters in the examples below are only a convention for making generated placeholders easy to find; they are not part of the placeholder:// syntax. For example, placeholder://@DOMAIN@ is valid, and the generated value is @DOMAIN@. A placeholder can occur within a larger scalar value, and a scalar can contain multiple placeholders:
https://placeholder://@HOST@/api/placeholder://@VERSION@
Choose delimiters that are valid for the templating language used by the deployment pipeline. For example, an Argo CD application may use Helm, Kustomize, Jsonnet, or a config management plugin, each with its own syntax. nevisAdmin 4 does not interpret that syntax: it removes each placeholder:// prefix and leaves the complete value after it unchanged for the configured renderer or replacement step.
Use placeholders only where the setting accepts a scalar value. For text settings, the value after each prefix is passed through unchanged. Typed settings support placeholders only when they explicitly support deferred values. If a setting is configured as a YAML sequence, the placeholder represents one sequence item; it does not expand into multiple items. A placeholder cannot stand for a complete sequence, map, or other structured value.
Placeholders are supported only by settings that pass the value through as text or explicitly support deferred typed values. They are not supported where a pattern requires a concrete value, such as an integer, duration, regular expression, IP address, certificate, or structured YAML object. They also cannot be used to change the cardinality or structure of a setting. Unsupported uses can fail during pattern validation or produce an invalid generated configuration. If a placeholder does not work in a setting, use a CI/CD substitution outside nevisAdmin 4 and report the use case for consideration.
Access Restriction
Plugin: nevisadmin-plugin-nevisproxy Sets up a filter in nevisProxy to block or filter incoming requests based on the source IP of the request.
The pattern can be assigned to applications
or an entire Virtual Host using Additional Settings.
Blocked requests are responded to with HTTP error code 403.
To produce a nice looking error page, ensure that
you have configured an error page for 403 on the Virtual Host
or use the HTTP Error Handling pattern on the same location.
Listing Type
Indicates if Source IPs should be used as blacklist or whitelist.
blacklist: Access from all configuredSource IPsis denied. All other IPs are allowed.whitelist: Access is allowed only for IPs in theSource IPslist. All other IPs are blocked.
Source IPs
List of client source IPs which shall be allowed. You may include entire range of IPs by separating two IPs with -.
If there is load-balancer in front of nevisProxy please configure it to preserve the client source IP. IPv6 is not supported here.
Examples:
10.0.0.1: specific IP address192.168.0.0-192.168.0.255: range of IP addresses0.0.0.0-255.255.255.255: all IP addresses
Source IP HTTP-Header
Optional setting used to specify HTTP header that contains the users IP. Otherwise, a default environment variable from nevisProxy is used.
Examples:
X-Forwarded-For
Country Database File
IP geolocation database file for country filtering.
Currently only the mmdb format (MaxMind Database) is supported. This is a binary file format.
Country Database URL
IP geolocation database URL for country filtering.
The resource behind the given URL is periodically downloaded and used as an IP geolocation database.
Currently only the mmdb format (MaxMind Database) is supported. This is a binary file format.
Using dbUrl and dbFile together is not supported, only set one of them.
Rules
Defines what action should be taken for a specified country.
Possible actions are:
- allow: Requests are let through
- log: A log entry is made for each request from the specified country
- block: Blocks requests from a country
Default Action
Defines the action taken either when no country rules were matched or the IP of a request does not have an associated country in the database.
Possible actions are:
- allow: Requests are let through
- log: A log entry is made for each request
- block: Blocks requests
Apply only to sub-paths
Set to apply this pattern on some sub-paths only.
Sub-paths must be relative (e.g. not starting with /)
and will be appended to the frontend path(s) of the virtual host (/)
or applications this pattern is assigned to.
Sub-paths ending with / are treated as a prefix,
otherwise an exact filter-mapping will be created.
The following table provides examples to illustrate the behavior:
| Frontend Path | Sub-Path | Effective Filter Mapping |
|---|---|---|
/ | secure/ | /secure/* |
/ | accounts | /accounts |
/ | api/secure/ | /api/secure/* |
/ | api/accounts | /api/accounts |
/app/ | secure/ | /app/secure/* |
/app/ | accounts | /app/accounts |
/app/ | api/secure/ | /app/api/secure/* |
/app/ | api/accounts | /app/api/accounts |
Allow Override
By default, access restriction rules apply to all sub-locations.
For instance, when you assign an Access Restriction pattern to a Virtual Host
all applications on this virtual host will be affected.
To replace the rules defined on a parent location
select enabled on all Access Restriction patterns in the hierarchy.
If disabled is selected anywhere in the hierarchy the rules are
considered additional.
Technical Details:
This feature is implemented using a nevisProxy LuaFilter.
Mapped filters are inherited to sub-locations unless an exclude-url-regex is defined.
By selecting enabled the generator is informed that the mapped filter has the purpose
access restriction. The generator then ensures that an exclude-url-regex entry
is generated when a filter with the same purpose is mapped to a sub-location.
Custom GeoLocation Lookups
The geolocation database contains multiple attributes to its IP-groups.
The attribute(s) that are retrieved by an IP-lookup can be altered using this parameter.
To check what attributes are in your database, use the tool mmdbinspect.
To set a path, separate its elements by slashes (/).
Each lookup entry contains a path as key and an output variable name as value.
This output variable makes the returned entries accessible from LuaFilter with req:getAttribute('output_var').
Examples:
country/names/en➜geolocation: Uses the country's English name and sets thegeolocationrequest attribute.country/iso_code➜countrycode: Uses the country's two letter long code and sets thecountrycoderequest attribute.country/names/en➜geolocation,country/iso_code➜countrycode,continent/code➜continentcodeKeep the default country name but also set the country code and continent code.
By default, the country's English name is used.
Country Database Download Periodicity
The IP geolocation database download periodicity. Only has effect when the database URL is set.
Access Token Consumer
Plugin: nevisadmin-plugin-oauth
This step generates an AccessTokenConsumer AuthState which
is able to validate access tokens issued by an OAuth 2.0 Authorization Server / OpenID Provider.
Use this step in the Initial Authentication Flow of a Authentication Realm
to provide a resource server for REST services.
The access token has to be sent as Bearer token in the Authorization header.
The content of the token will be stored in session variables prefixed with oauth2.token.claim..
The sub claim of the access token will be used as user ID for nevisAuth.
This is technically sufficient for authentication.
However, it is recommended to perform additional checks in subsequent steps.
For instance, you may use a nevisIDM User Lookup step to look up a user in nevisIDM.
When the access token is invalid a 403 forbidden will be returned.
This pattern is experimental and it has some limitations.
For instance, it is assumed that the authorization server is running Nevis and
is set up by a OAuth 2.0 Authorization Server / OpenID Provider pattern that is part of this project.
If you need improvements for this pattern, please create a feature request.
On Success
Assign a step to continue with after successfully validating the token.
On Missing Token
Assign a step to continue with when no token was sent.
If nothing is assigned then authentication will fail with an error.
OAuth 2.0 Authorization Server / OpenID Provider
Assign the OAuth 2.0 Authorization Server / OpenID Provider
which has issued the access token.
Note that this step works in combination with Nevis OAuth 2.0 Authorization Server / OpenID Provider
only and the other pattern has to be in the same project.
ActiveMQ Client Configuration
Plugin: nevisadmin-plugin-nevisdetect Using the pattern, you can connect to an external ActiveMQ service using TLS/SSL.
Message Broker URL
Set the URL for the ActiveMQ message broker. Example:
ssl://my-message-broker:61616
Advanced Session Upgrade
Plugin: nevisadmin-plugin-nevisauth Serves as entry point for an authentication process which may be executed on demand.
Assign the pattern to a Authentication Realm using the reference On Demand.
An entry point for the configured Authentication Level is added to the nevisAuth configuration.
The process is triggered by services by assigning an Authorization Policy pattern using Additional Settings
which set the required Authentication Level.
Authentication Level
Define the authentication level that this flow produces on successful execution.
The step assigned to On Entry (or a subsequent step) must achieve at least this level.
Custom Condition
Enter a custom nevisAuth or EL expression.
If set the Authentication Level will not be used.
The step assigned to On Entry will be executed when the expression evaluates to true.
On Entry
Point to the first step of the authentication process.
Apple Login Step
Plugin: nevisadmin-plugin-oauth Setup social login, using Apple as OpenID Connect provider.
Client ID
ClientID is Identifier provided by Apple when you register Apple as IdP service.
Client Secret
The Client Secret is a JWT token generated by using a private key provided by Apple. Please follow the instructions here.
You can generate the client secret by yourself and configure it here, or upload the Private Key to generate the client secret automatically. Only private key or client secret can be use at the time
Return Path
The callback URI to go to after a successful login with Apple.
This will create an endpoint in your host config.
The URL will be a combination of the Frontend Address of the Virtual Host and the value configured here.
For example, let's assume that you have configured:
- Return Path:
/oidc/apple/ - Frontend Address:
https://nevis.net
Then the URL will be https://nevis.net/oidc/apple/.
Use the exact: prefix to use the given path as-is.
Without this prefix a normal mapping with /* will be generated and thus sub-paths will be accessible as well.
Scope(s)
Select the requested scopes for getting user information from Apple.
The default is email and thus minimal information will be returned.
The scope openid will always be added as Apple uses OpenID Connect.
Virtual Host
Assign a Virtual Host which shall serve as entry point for the callback from social login provider.
In case your host has
- 1 address, that address will be used
- many addresses with
- 1 https, and many http, the https will be used without warning
- mix between http and https, the 1st https will be used with warning
- single scheme (http or https only) the 1st address will be used with warning
E.g.
http://nevis.net
http://nevis-security.net
https://nevis.net
https://nevis-security.net
The https://nevis.net will be used as the host for Apple callback
On Success
The step executed after a successful authentication.
If no step is configured here the process ends with AUTH_DONE.
In case you change this to your custom step(s),
you can assign pattern Social Login Final Step as the last step of the Authentication process
to redirect back to original URL.
On Failure
The step that will be executed if the authentication fails.
If no step is configured here the process ends with AUTH_ERROR.
In case you change this to your custom step(s),
you can assign pattern Social Login Final Failure Step as the last step of the Authentication process
to redirect back to original URL.
Private Key
Private key provided by Apple. Find out more here.
If you upload your private key here and set the Issuer, the pattern will automatically generate the Client Secret.
If you do not want to configure your private key, you have to set the Client Secret instead.
Issuer
The issuer registered claim identifies the principal that issued the client secret.
Since the client secret belongs to your developer team, use your 10-character Team ID associated with your developer account.
Find out more here.
nevisIDM
Choose which nevisIDM instance you want to store the user's information after logged in with social login provider.
Client External ID
The ExtId of the client in nevisIDM that will be used to store the user
On User Not Found
Configure the authentication flow to be executed when no user was found and the email provided by social account does not exist.
The authentication flow must contain the Social Login Create User pattern if a new user shall be created.
Note: Please select scope email and profile for getting user's information from social account.
On User Found
Configure the Authentication Flow in case no user with Subject/ID from social account was found but email does exist in nevisIDM. The Authentication Flow must contain:
Social Login Link Userpattern to link an existing user in IDM with Subject/ID of social account.Social Login Doneto end the social login flow after some other action(s).
Note: Please select scope email and profile for getting user's information from social account.
Claims Request
The claims request parameter. This value is expected to be formatted in JSON and does not accept trailing spaces nor tabs.
User ID Field
Logged userId will automatically get from social account. But you can change the userId by using this field.
Additional Auth Request Parameters
Arbitrary additional request parameters used in the authentication request. The property supports variable substitution.
Example:
[paramName]=[paramValue]
Button Label
Enter the text that should be displayed for the end-user on the social login button, and provide translations for this label on the Authentication Realms.
AuthState Patch
Plugin: nevisadmin-plugin-nevisauth
Patches AuthState elements generated by other patterns.
We recommend to use this pattern only if there is no other alternative. Consider creating a ticket at Nevis with your requirements.
If want to add a ResultCond element where the next points to an AuthState that is not yet part of any flow,
you can assign the pattern that generates this AuthState via Additional Steps.
Authentication Realm
Assign the authentication realm pattern that generates the AuthState elements that you want to patch.
Patch File
Upload an XML file containing patches for AuthState elements.
The name has to match an existing AuthState.
Check the esauth4.xml in the deployment preview to find out which elements exist.
You can change overwrite any other attribute of the AuthState,
such as class, final, and resumeState.
The following example shows the basic syntax:
<AuthState name="example-realm_example-state"
class="ch.nevis.esauth.auth.states.directResponse.DirectResponseState"
final="true" resumeState="false">
<Response value="AUTH_ERROR"/>
<property name="statusCode" value="401"/>
<property name="contentType" value="application/json"/>
<property name="content" value='{"status":"forbidden"}'/>
</AuthState>
The patches are generally additive. However, you can also remove child elements.
To remove a property, set an empty value:
<property name="example" value=""/>
Likewise, to remove a ResultCond element, leave the next attribute empty:
<ResultCond name="example" next=""/>
Additional Steps
Assign any steps that are referenced by your patches.
Authentication Cloud Login
Plugin: nevisadmin-plugin-authcloud Connects to the Nevis Authentication Cloud.
This step adds mobile authentication to your authentication flow.
You need an access app use this step.
The user must be registered in your Authentication Cloud instance.
You can use the Authentication Cloud Onboarding pattern for that.
When the user exists, login confirmation is requested. By default, a push notification is sent to trigger the Nevis Access App.
However, you can also show a QR code instead (see Authentication Type).
If the user is not registered or has no active authenticator,
the On User Not Exists exit will be taken and no screen will be shown.
Your authentication flow should include any of the following patterns in front of this pattern:
nevisIDM Password Login: use when mobile authentication shall be a second factornevisIDM User Lookup: use for passwordless login
nevisAuth will connect to your Authentication Cloud instance using TLS and thus the CA certificate of the endpoint needs to be trusted.
If you get an unable to find valid certification path to requested target error
in the nevisAuth log, then you have to import the CA certificate of the Authentication Cloud
endpoint into the Default Backend Trust Store of the nevisAuth Instance.
Authentication Type
Choose between:
QR code / deep link: renders a QR code which should be scanned or shows a deep linkpush / deep link: sends a push notification to the user which tells them to check the access app or shows a deep link.
The first option is used for non-mobile browsers.
The deep link is shown when using a browser on a mobile.
On Success
Assign a step to execute after successful authentication.
If no step is configured, the flow ends and an authenticated session will be established.
This requires that the session contains an authenticated user.
A simple way to ensure that is to include nevisIDM User Lookup or nevisIDM Password Login steps in your flow.
On User Not Exists
Assign an authentication step to continue with when the user does not exist or has no active authenticator.
If no step is assigned here the authentication flow will fail for such users.
On Abort
Assign a step to continue with when the user has aborted in the mobile app or a timeout occurred.
On Failure
Assign a step to continue with when the operation has failed due to unknown reasons.
For instance, you may assign the following steps:
User Information: show an error message and terminate the authentication flow.nevisIDM Second Factor Selection: select an alternative second factor for authentication.
Instance
Instead of uploading an access-key.json,
you can enter the name of your Authentication Cloud instance here.
Access Key
Instead of uploading an access-key.json,
you can enter the access key of your Authentication Cloud instance here.
Access Key File
Upload the access-keys.json of your Authentication Cloud instance.
The file contains the instance name and an access key.
You can download this file from the Nevis Authentication Cloud Management Console.
Check Integrate Authentication Cloud with nevisAdmin 4 for setup instructions.
On Skip
Assign a step to continue with when the user clicks the skip button.
A skip button will be added to the authentication screen.
Skip Element Type
The type of element which allows the user to skip this step.
The element is usually a button but may also be changed to an info text.
As info elements may contain HTML you can display a link that behaves like a button.
Skip Label
Label to display on the element which allows the user to skip.
The element is usually a button but this can be changed by setting Skip Type.
Title
Enter a label to use for the title.
You can use a different standard label (e.g. title.login) or invent your own.
Translations for custom labels can be defined in the Authentication Realm / GUI Rendering / Translations.
The default label title.authcloud has the following translations:
en: Authenticate with Access Appde: Mit Access-App anmeldenfr: S'authentifier avec l'application Accessit: Autenticazione con l'app Access
Deep Link Label
Label to display on the element which allows the user to use the deep link to log in.
The element is usually a button.
Username Prefix
Optional prefix which will be added to the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
The Authentication Cloud username consists of the user ID and the optional Username Prefix.
The user ID is looked up from the following sources:
- session variable
ch.adnovum.nevisidm.user.extId - request field
userId
Hash Username
Enable to use a hash (MD5) for the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
There are 2 motivations for enabling this feature:
- the Authentication Cloud username is limited to 50 characters. Hashing makes it shorter.
- you avoid storing sensitive user information in the Authentication Cloud instance.
Proxy Server
If you have to go through a forward proxy for the outbound connection to firebase enter the hostname:port here.
At the moment only HTTP proxy is supported.
Authentication Cloud Lookup
Plugin: nevisadmin-plugin-authcloud Connects to the Nevis Authentication Cloud.
Use this step to check if the user is active in your Authentication Cloud instance.
When the user exists and has an active authenticator, the On User Exists exit will be taken.
On User Exists
Assign an authentication step to continue with when the user exists and has an active authenticator.
On User Not Exists
Assign an authentication step to continue with when the user does not exist or has no active authenticator.
On Failure
Assign a step to continue with when the operation has failed due to unknown reasons.
For instance, you may assign the following steps:
User Information: show an error message and terminate the authentication flow.nevisIDM Second Factor Selection: select an alternative second factor for authentication.
Instance
Instead of uploading an access-key.json,
you can enter the name of your Authentication Cloud instance here.
Access Key
Instead of uploading an access-key.json,
you can enter the access key of your Authentication Cloud instance here.
Access Key File
Upload the access-keys.json of your Authentication Cloud instance.
The file contains the instance name and an access key.
You can download this file from the Nevis Authentication Cloud Management Console.
Check Integrate Authentication Cloud with nevisAdmin 4 for setup instructions.
Username Prefix
Optional prefix which will be added to the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
The Authentication Cloud username consists of the user ID and the optional Username Prefix.
The user ID is looked up from the following sources:
- session variable
ch.adnovum.nevisidm.user.extId - request field
userId
Hash Username
Enable to use a hash (MD5) for the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
There are 2 motivations for enabling this feature:
- the Authentication Cloud username is limited to 50 characters. Hashing makes it shorter.
- you avoid storing sensitive user information in the Authentication Cloud instance.
Proxy Server
If you have to go through a forward proxy for the outbound connection to firebase enter the hostname:port here.
At the moment only HTTP proxy is supported.
Authentication Cloud Onboarding
Plugin: nevisadmin-plugin-authcloud Connects to the Nevis Authentication Cloud.
This step can be used to enroll users.
You need an access app use this step.
A QR code is shown which has be scanned with the app.
If the user is already registered and has an active authenticator,
the On User Exists exit will be taken and no screen will be shown.
Your flow should include any of the following patterns in front of this pattern:
nevisIDM Password Login: use when Auth Cloud shall be used as second factornevisIDM User Lookup: use for passwordless login
nevisAuth will connect to your Authentication Cloud instance using TLS and thus the CA certificate of the endpoint needs to be trusted.
If you get an unable to find valid certification path to requested target error
in the nevisAuth log, then you have to import the CA certificate of the Authentication Cloud
endpoint into the Default Backend Trust Store of the nevisAuth Instance.
On Success
Assign a step to execute after successful onboarding.
If no step is configured, the flow ends and an authenticated session will be established.
This requires that the session contains an authenticated user.
A simple way to ensure that is to include nevisIDM User Lookup or nevisIDM Password Login steps in your flow.
On User Exists
Assign an authentication step to continue with when the user exists and has an active authenticator.
If no step is assigned here the authentication flow will fail for such users.
On Abort
Assign a step to continue with when the user has aborted in the mobile app or a timeout occurred.
On Failure
Assign a step to continue with when the operation has failed due to unknown reasons.
For instance, you may assign the following steps:
User Information: show an error message and terminate the authentication flow.nevisIDM Second Factor Selection: select an alternative second factor for authentication.
Instance
Instead of uploading an access-key.json,
you can enter the name of your Authentication Cloud instance here.
Access Key
Instead of uploading an access-key.json,
you can enter the access key of your Authentication Cloud instance here.
Access Key File
Upload the access-keys.json of your Authentication Cloud instance.
The file contains the instance name and an access key.
You can download this file from the Nevis Authentication Cloud Management Console.
Check Integrate Authentication Cloud with nevisAdmin 4 for setup instructions.
On Skip
Assign a step to continue with when the user clicks the skip button.
A skip button will be added to the authentication screen.
Skip Element Type
The type of element which allows the user to skip this step.
The element is usually a button but may also be changed to an info text.
As info elements may contain HTML you can display a link that behaves like a button.
Skip Label
Label to display on the element which allows the user to skip.
The element is usually a button but this can be changed by setting Skip Type.
Title
Enter a label to use for the title.
You can use a different standard label (e.g. title.login) or invent your own.
Translations for custom labels can be defined in the Authentication Realm / GUI Rendering / Translations.
The default label title.authcloud has the following translations:
en: Authenticate with Access Appde: Mit Access-App anmeldenfr: S'authentifier avec l'application Accessit: Autenticazione con l'app Access
Deep Link Label
Label to display on the element which allows the user to use the deep link to onboard.
The element is usually a button.
Username Prefix
Optional prefix which will be added to the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
The Authentication Cloud username consists of the user ID and the optional Username Prefix.
The user ID is looked up from the following sources:
- session variable
ch.adnovum.nevisidm.user.extId - request field
userId
Hash Username
Enable to use a hash (MD5) for the Authentication Cloud username.
WARNING: Changing this option means that all existing users will have to register their Access Apps again.
There are 2 motivations for enabling this feature:
- the Authentication Cloud username is limited to 50 characters. Hashing makes it shorter.
- you avoid storing sensitive user information in the Authentication Cloud instance.
Proxy Server
If you have to go through a forward proxy for the outbound connection to firebase enter the hostname:port here.
At the moment only HTTP proxy is supported.
Onboarding Screen Button(s)
Adds another button to the onboarding screen.
The button may have a special Button Name set
to render it in a nice way using a customized Login Template.
For instance, Identity Cloud uses this mechanism to add a button which looks like a back arrow. This button takes the user to a previous step.
This is an advanced setting. Use only when you understand the concept.
Button Order
Choose primary to show the primary button before any additional buttons.
Choose reverse to display the primary button last.
Authentication Done
Plugin: nevisadmin-plugin-nevisauth Completes an authentication flow.
The pattern may only be used as the last step within an authentication flow.
Use as explicit follow-up for patterns such as Generic Authentication Step and User Information
which do not add follow-up steps automatically.
Authentication Failed
Plugin: nevisadmin-plugin-nevisauth
Shows a GUI with the error message error_99.
When the GUI is shown, the session is terminated.
If HTTP Error Code is configured and the configured code is handled on the nevisProxy Virtual Host
then the GUI is not shown, and a static error page is presented instead.
The pattern may only be used as the last step within an authentication flow.
Use as explicit follow-up for patterns such as Generic Authentication Step and User Information
which do not add follow-up steps automatically.
HTTP Error Code
Enter a status code for error page produced by nevisAuth.
If not set the status code will be 200.
Note that the error page from nevisAuth will not be shown, when error handling is applied by nevisProxy.
nevisProxy replaces the body of the HTTP response, when there is a page for this status code,
uploaded to Hosted Resources of the Virtual Host, or to a HTTP Error Handling pattern.
Authentication Realm
Plugin: nevisadmin-plugin-nevisauth This pattern configures authentication.
Assign this pattern to your applications as Authentication Realm,
or expose it as a SAML IDP or OAuth 2.0 Authorization Server / OpenID Provider.
Examples how to authenticate users can be found in the Concept & Configuration Guide.
The authentication processes are provided by a nevisAuth Instance which has to be assigned.
For rendering pages during authentication, a Login Renderer is used.
Initial Authentication Flow
The initial authentication flow starts with the assigned authentication step. To create a multistep flow, reference further steps from within the first assigned step.
The initial authentication flow is applied on first access, when the client does not have an authenticated session.
Every time a step within the flow executes successfully, the authentication level defined in that step is added to the authenticated session.
Session Upgrade Flows
Applications may be configured to trigger a session upgrade flow.
Here you assign the authentication steps which provide these session upgrade flows.
This mechanism also works when the realm is accessed via a SAML IDP.
The process of selecting and executing a flow is as follows:
An application's Authorization Policy specifies the required authentication level (2-9) which is needed to access the application.
Level 1 is not allowed here, as the session has at least level 1 after the user successfully completes the initial authentication flow.
Every time the user accesses the application, the policy is enforced as follows:
-
If the authentication level of the current session is lower than the level required by the policy, nevisAuth is invoked to execute a session upgrade flow - the one which provides the required level.
-
Only if the flow runs through successfully, the level reached is stored in the session and access is granted.
-
If the level of the session equals, or is higher than the required level, access is granted immediately.
-
Authentication steps assigned here are executed only if the required level (by policy) exactly matches the provided value in its
Authentication Levelproperty. For example, if level3is required, the authentication step directly providing that level is started.
It is possible, in a multistep flow, that the required authentication is reached only after the second step or later.
In this case, assign Advanced Session Upgrade as the first step.
In this step, you declare the level that should ultimately be reached by the flow.
The engine can then match the required level to the one provided by the flow,
even if it is not provided by the first authentication step in the flow.
When no flow can be determined the Default Session Upgrade Flow will be used instead.
Default Session Upgrade Flow
Assign an authentication step which should be invoked when a session upgrade is triggered
and none of the Session Upgrade Flows can be applied.
Unlock Flow
To support the unlock method assign a step here.
This method is triggered by nevisProxy in the following cases:
- after the session was locked due to timeout
- after the session was locked with a request containing the query parameter
?lock
This is an advanced configuration.
The unlock method is sometimes used in setups where nevisProxy acts as a reverse proxy in front of applications.
Logout Flow
The default logout behavior is as follows:
- the logout is invoked by a request to a protected application with query parameter
?logout. - nevisAuth receives a request with method
logout. The default implementation simply terminates the session and returns aGuidescriptor - a page is shown that informs the user that the logout is done.
- when the user clicks the
Continuebutton, they can log in again on the same URL.
To replace this behavior, assign a step here. The following step types are supported:
Logout: this step has settings that apply to the logout flowGeneric Authentication Step: in case you need a custom implementation
To offer the logout function to the user, you have to add a link to your applications.
When this realm is used through a SAML IDP, then customization of the logout flow is limited. This is because the SAML protocol defines how logouts are performed.
The only thing that you can customize in case of SAML is the URL to redirect to in case of IDP-initiated SAML logout,
after the SAML logout is done, and the process ends on the IDP side.
To do this, you have to assign a Logout pattern and configure a custom Redirect.
Application Access Tokens
Tokens assigned here may be created after successful completion of the Initial Authentication Flow.
To produce and forward a token to an application backend,
reference the same token from the application's Additional Settings property.
nevisAuth
Assign a nevisAuth Instance pattern.
Key Store
Define the key store to use for 2-way HTTPs connections from nevisProxy to nevisAuth.
If no pattern is assigned automatic key management will provide the required key material.
This requires that the nevisAuth Instance is part of this project and also uses automatic key management.
Automatic key management should be used for test setups only.
Trust Store
Defines the trust store that nevisProxy uses to validate the nevisAuth HTTPs endpoint.
If no pattern is assigned automatic key management is used to provide the trust store.
This requires that the nevisAuth Instance is part of this project and also uses automatic key management.
Automatic key management should be used for test setups only.
Hostname Validation
Enable to verify that the hostname on the certificate presented by nevisAuth matches the configured hostname in the nevisAuth Instance or nevisAuth Connector pattern.
Internal SecToken Trust Store
Defines the trust store nevisProxy uses for validating the signature of the NEVIS SecToken issued by nevisAuth.
If no pattern is assigned automatic key management is asked to provide the trust store.
This requires that the nevisAuth Instance is part of this project and also uses automatic key management.
Automatic key management should be used for test setups only.
Custom Parameters (IdentityCreationFilter)
Add custom init-param elements to each IdentityCreationFilter generated by this pattern.
Most realms generate only 1 IdentityCreationFilter named Authentication_<name>,
which is used to protect the application.
Multi-line values, as required for conditional configuration,
can be entered by replacing the line-breaks with \n.
Examples:
| Key | Value |
|---|---|
| BodyReadSize | 64000 |
| InterceptionRedirect | Condition:ENV:HTTP_USER_AGENT:mozilla|Mozilla\ninitial\nnever |
| ClientCert | want |
Custom Parameters (SecurityRoleFilter)
Add custom init-param elements to the SecurityRoleFilter generated by this pattern.
Multi-line values, as required for conditional configuration,
can be entered by replacing the line-breaks with \n.
Custom Parameters (Esauth4ConnectorServlet)
Add custom init-param elements to the Esauth4ConnectorServlet generated by this pattern.
That servlet is called Connector_<name>.
Multi-line values, as required for conditional configuration,
can be entered by replacing the line-breaks with \n.
Examples:
| Key | Value |
|---|---|
| EnablePollTerminatedCalls | true |
Login Renderer
Choose a login renderer.
In Kubernetes deployments, assignment of a renderer is mandatory.
Assign either a nevisLogrend Instance or a Proxy Login Renderer pattern.
The renderer has to be compatible with the Default Template (see Login Template tab).
In classic VM deployments, a default login renderer will be created when no pattern is assigned.
In case of nevisLogrend, the instance will be called default and deployed on the same host as nevisProxy.
Key Store
Configure a key store to use for 2-way TLS connections to nevisLogrend.
If no pattern is assigned no key store will be created.
The connection will be either 1-way TLS or plain HTTP, depending on the URL of nevisLogrend.
This configuration does not apply when a Proxy Login Renderer is used.
Trust Store
Configure a trust store to use for TLS connections to nevisLogrend.
If no pattern is assigned an automatic trust store will be created.
This configuration does not apply when plain HTTP or the Proxy Login Renderer is used.
Hostname Validation
When enabled the server cert has to match the hostname of nevisLogrend.
This configuration does not apply when plain HTTP or the Proxy Login Renderer is used.
nevisLogrend / Application default.properties
Add or overwrite properties in the default.properties of the nevisLogrend Application.
This is an advanced setting. Use only when there is no other alternative and consider creating a support ticket with your use case.
Check Login Application Configuration for supported properties.
We recommend to not overwrite any language related properties, as the languages have to be in sync with nevisAuth.
You can configure the supported languages on the nevisAuth Instance.
This setting requires that nevisLogrend is used for GUI rendering.
Check the help of Login Renderer for details.
Template Style
Choose a default template:
classic: default in releases before May 2025.modern: default since May 2025.proxy: a template for thenevisProxy Login Renderer.
The modern template is recommended for new setups.
Company Logo
Upload a logo to be displayed on the login page.
The logo file should have an appropriate size, e.g. 50x50 pixels.
Out of the box, this setting is supported by the modern template only.
If you use a different nevisLogrend template,
you can add the expression ${logo} to point to the uploaded file.
Download the modern template to see how the expression is used there.
Primary Color
Configure the primary color.
Out of the box, this setting is supported by the modern template only. It is used to color buttons.
If you use a different nevisLogrend template, you can add the expression ${primaryColor} in your CSS file.
Download the modern template to see how the expression is used there.
Border Radius
Configure the corder radius of the login box.
Out of the box, this setting is supported by the modern template only.
If you use a different nevisLogrend template, you can add the expression ${borderRadius} in your CSS file.
Download the modern template to see how the expression is used there.
Font Family
Configure the font family.
By default, this setting is supported by the modern template only.
If you use another template, you can reference the expression ${fontFamily} in your CSS file.
Check the modern template for an example of how the expression is applied.
The actual font used depends on the browser and operating system.
You can specify multiple font families, separated by commas, to provide fallbacks.
The CSS files in the template append additional fonts to ensure all characters (even emojis) can be rendered.
This approach follows the idea described here: Bootstrap Native Font Stack.
Example values:
Arial, sans-serifHelvetica, Arial, sans-serifTimes New Roman, serif
Template Customization
Customize the rendering of login pages.
Download one of the default templates to get started.
nevisLogrend: Direct Mode
You can upload Velocity template files and resources to nevisLogrend.
Zip files will be extracted into the nevisLogrend application:
/var/opt/nevislogrend/<instance>/data/applications/<realm>
Flat files will be added to the following subdirectories:
webdata/template: Velocity templates (*.vm)webdata/resources: static resources (e.g. images, CSS, Javascript)
nevisLogrend: Expressions
In nevisLogrend templates you may use the following expressions:
| Expression | Description |
|---|---|
${form} | login form (form.vm) |
${lang.switch} | language switcher component (lang.vm) |
${lang.code} | current language code (i.e. en, de) |
${label.myLabel} | a label which must be translated via Custom Translations |
${resources} | path to static resources (e.g. CSS, images, Javascript) |
${resource:<name>} | path to static resource name with attached hash |
These expressions will be replaced with a corresponding Velocity snippet at generation time.
For instance, using the expression ${resource:bootstrap.min.css} with the modern template yields the following path:
${login.appDataPath}/resources/bootstrap.min.css?v=3f1c72e8.
Note that the expression ${login.appDataPath} is handled at runtime by nevisLogrend.
nevisProxy Login Renderer
nevisProxy provides a basic login renderer which can be used instead of nevisLogrend.
See Login Renderer for details.
For each enabled language (e.g. en) upload a file named <lang>_template.html.
The template must contain the placeholder NEVIS_AUTH_FORM.
If your templates require additional resources (e.g. CSS, images)
upload them as Hosted Resources on the nevisProxy virtual host.
nevisLogrend: Simple Mode
In simple cases you may not have to deal with Velocity template files.
To replace the outer HTML you can upload a file named template.html.
The template must contain the ${form} expression.
Here is a simple example:
<!DOCTYPE html>
<html lang="${lang.code}">
<head>
<title>${label.title}</title>
<link href="${resources}/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="${resources}/default.css" rel="stylesheet" type="text/css" media="all">
</head>
<body>
<header id="header" class="container-fluid">
<img class="logo center-block" src="${resources}/logo.png" alt="Company Logo">
</header>
<main id="content" class="container">
${form}
</main>
</body>
</html>
Customization Mode
Choose between:
-
additive: files uploaded asLogin Templatewill be added on top of the default.- Use this option when you want to add or replace files, but don't want to upload an entire template.
-
complete: only the files uploaded asLogin Templatewill be deployed.- Use this option when you want to provide the entire template.
Dynamic Template Selection
Configure how the login template is selected based on the request. Choose between:
disabled: The login template configured in this tab is used.OAuth client: select the login template based on the OAuth client ID.
The OAuth client variant requires that you fill out the Template Selection Rules table.
Template Mapping
When Template Selection is set to OAuth client, you have to define which login template to use for which OAuth client ID.
Fill out this table as follows:
- Key: The OAuth client ID.
- Value: Index within
Login Templates
Dynamic Templates
Assign additional login templates that are dynamically selected based on the request.
Check the Template Selection and Template Selection Rules settings for details.
This setting is ignored when Template Selection is disabled.
Default Translations
Choose between:
-
enabled- add translations for labels which are commonly used (e.g.titleorlanguage.*labels in nevisLogrend,error.*labels in nevisAuth) and which are provided by realm patterns (e.g. assigned authentication steps). -
disabled- add only what has been uploaded viaCustom Translations. If your translations are incomplete, users will see the untranslated labels.
Note that nevisAuth supports only 1 set of translations and the generation is cumulative.
Thus, if you have 1 nevisAuth Instance with multiple realms, and you want to leave out default labels,
then you have select disabled in all these realms.
Custom Translations
Labels are used to show text in the language of the user.
Which labels are used depends on the assigned steps.
Click Download Default Labels to retrieve the used labels and their translations.
Here you can overwrite the defaults and add your own translations or even add new labels,
which may be required when using a Custom Login Template or Generic Authentication Step.
Upload 1 file per language code. The file name should be labels_<code>.properties.
Check Languages on the nevisAuth Instance for enabled language codes.
The uploaded files must be UTF-8 encoded or special characters must be HTML encoded.
If you want to reuse existing text_<code>.properties and LitDict_<code>.properties files,
you have to merge them first, or set Translations Mode to separate.
By default, the patterns add several default labels and the labels configured here are added on top.
This is convenient as you only have to define labels that you want to add or overwrite.
However, this way you cannot remove labels. If you want to do that you have to set Default Translations to disabled
and then only the uploaded labels will be used.
The default login template uses the following labels:
title- used as browser page titlelanguage.<code>- used by language switch component
The default logout process of nevisAuth (which will be applied when no step is assigned to Logout)
has a confirmation GUI which uses the following labels:
logout.label- header of the logout confirmation GUIlogout.text- text shown to the usercontinue.button.label- label on the confirmation button
Translation Mode
Choose between:
-
combined- upload 1 file per language code namedlabels_<code>.properties. The labels will be added to both nevisAuth and nevisLogrend. Alternatively, you can upload a zip file calledlabels.zipcontaining these properties files. -
separate- select only when you need different labels in nevisAuth and nevisLogrend. The files must be calledLitDict_<code>.propertiesfor nevisAuth andtext_<code>.propertiesfor nevisLogrend. Alternatively, you may upload zip file calledLitDict.zipandtext.zipcontaining these properties files.
Session Tracking
Choose between:
COOKIE: issue a session cookie.AUTHORIZATION_HEADER: track the session based on the value of the Authorization header.CUSTOM: track the session based on custom configuration. It generates an empty session filter which has to be replaced (see below).disabled: disable session tracking.
When CUSTOM is selected, an empty filter will be generated based on the name of the realm:
<filter>
<filter-name>SessionHandler_SSO</filter-name>
<filter-class>__REPLACE_USING_GENERIC__</filter-class>
</filter>
For the filter-class, a placeholder (REPLACE_USING_GENERIC) will be used and that placeholder has to be overwritten.
Another pattern must complete the session filter. For example, use Generic Virtual Host Context pattern with the following Filters and Mappings configuration:
<filter>
<filter-name>SessionHandler_SSO_RealmName</filter-name>
<filter-class>ch::nevis::nevisproxy::filter::session::SessionManagementFilter</filter-class>
<init-param>
<param-name>Identification</param-name>
<param-value>CUSTOM</param-value>
</init-param>
<init-param>
<param-name>Custom.RequiredIdentifiers</param-name>
<param-value>HEADER:Authorization</param-value>
</init-param>
<init-param>
<param-name>Servlet</param-name>
<param-value>LocalSessionStoreServlet</param-value>
</init-param>
</filter>
Session Cookie Name
Each realm has its own session cookie.
By default, this cookie will be called Session_<pattern-name>
Set this optional property to use a different name (e.g. ProxySession).
Note that each realm has its own session. However, if the same cookie name is configured for multiple realms running on the same host the sessions will be cleaned up together when the first session expires.
Session Cookie Same Site
In February 2020 Chrome 80 has been released which treats cookies without SameSite flag as Lax.
This change can break cross-domain use cases (e.g. SAML).
Thus, it is recommended to select None here.
If None is selected, and you have to support older browsers also check Cookie Same Site Relaxation.
If you do not expect any requests from other domains, you may also go for Lax or Strict as this increases security.
Session Cookie Same Site Relaxation (Experimental)
Some older browsers treat cookies with SameSite=None as Strict.
See this example bug report for Safari:
Bug 198181 - Cookies with SameSite=None or SameSite=invalid treated as Strict
Enable this feature to map a filter to the root location /* which evaluates the User-Agent request header
to remove SameSite=None for browsers which are known to be affected.
Session Cookie Validity Timeout
Configures the number of seconds a cookie is still valid after a new cookie is generated, for example, due to a successful login.
Increasing the value can help minimize the chance of session loss during a login or step-up with parallel requests.
Session Validation
A newline separated list of rules declaring attributes that must not change in the same session. A rule has the following syntax:
AUTH|ENV|CONST|PARAM|HEADER:<name of the attribute>:block|invalidate
block: the request will be blocked and403 (Forbidden)will be returnedinvalidate: the session will be invalidated and a new one will be created
nevisProxy Conditions are supported. See nevisProxy reference guide for details.
For instance, use the following configuration to terminate the session if the source IP changes:
ENV:REMOTE_ADDR:invalidate
Initial Session Timeout
Define the idle timeout of the initial session. The user must complete the authentication within this time.
Authenticated Session Timeout
Define the idle timeout of an authenticated session.
Max Session Lifetime
Define the maximum lifetime of an authenticated session. The session will be removed after that time even if active.
Update Session Timestamp Interval
Sets the minimum time interval between two updates of the session timestamp.
If the parameter is set to "0", the system will update the session timestamp each time a request accesses a session.
The Initial Session Timeout is used as Update Session Timestamp Interval if it is shorter than the duration configured here.
Custom Parameters (SessionManagementFilter)
Add custom init-param elements the SessionManagementFilter generated by this pattern.
Examples:
| Key | Value |
|---|---|
| Cookie.Persistent | true |
| Cookie.Path | /some/path |
Language Cookie Name
Enter a name of the cookie that nevisLogrend issues to remember the language of the user.
The same name will also be used in nevisAuth to determine the language.
Note that the language cookie name is an instance global configuration in nevisAuth. Enter the same value for all realms associated with the same nevisAuth instance.
Language Cookie Domain
Enter a domain for the cookie that nevisLogrend issues to remember the language of the user.
This setting should only be used when you want to issue a wildcard cookie
to share the language with other sub-domains (e.g. across multiple Virtual Host).
For instance, if you enter .example.com then
the cookie will also be sent to subdomain.example.com.
Reset Authentication Condition
In some setups it is required to adapt the resetAuthenticationCondition of the Domain.
You can configure a nevisAuth or EL expression here.
If the expression evaluates to true then the authentication flow is reset
and the request is dispatched from the beginning.
Authorization Policy
Plugin: nevisadmin-plugin-nevisauth Assign the pattern to an application to enforce a session upgrade (stepup).
Define the session upgrade process in the realm used for initial authentication.
If the realm is a SAML Service Provider Realm,
define the upgrade flow in the realm
assigned to the SAML Identity Provider.
Required Roles
Optional setting to enforce authorization.
Callers need any of the specified roles to access.
Required roles defined for an application can be overridden for a sub-path by combining several Authorization Policy patterns for this application.
Required roles can also be inherited between patterns. See Required Roles Mode for details.
This setting requires assigning an Authentication Realm on the application pattern.
Usage examples:
- Enforce required roles for an application:
use an
Authorization Policypattern with theRequired Rolesto enforce and link it to the application viaAdditional Settings; - Enforce required roles for some sub-paths of an application:
use an
Authorization Policypattern with theRequired Rolesto enforce andApply only to sub-pathsset to the paths to protect. Link the pattern to the application viaAdditional Settings; - Enforce some main required roles for an application and some specific required roles for some sub-paths:
use two
Authorization Policypatterns, one with the mainRequired Rolesand no sub-path, and one with the specificRequired RolesandApply only to sub-pathsset to the paths where the specific required roles should apply. Link both patterns to the application viaAdditional Settings. - Enforce some main required roles for an application and disable them for some sub-paths:
use two
Authorization Policypatterns, one with the mainRequired Rolesand no sub-path, and one with noRequired RolesandApply only to sub-pathsset to the paths where no required roles should be enforced. Link both patterns to the application viaAdditional Settings. - Enforce some required roles for an application and add some forbidden roles for some sub-paths:
use two
Authorization Policypatterns, one with theRequired Rolesfor the application,Required Roles Modeset toself-contained, and no sub-path, and the other pattern with noRequired Roles,Required Roles Modeset toinherited, theForbidden Rolesfor the subpaths,Forbidden Roles Modeset toself-contained, andApply only to sub-pathsset to the paths where the forbidden roles should be enforced. Link both patterns to the application viaAdditional Settings.
Forbidden Roles
Optional setting to enforce authorization.
Callers must not have any of the specified roles to access.
Forbidden roles defined for an application can be overridden for a sub-path by combining several Authorization Policy patterns for this application.
Forbidden roles can also be inherited between patterns. See Forbidden Roles Mode for details.
This setting requires assigning an Authentication Realm on the application pattern.
Usage examples:
- Enforce forbidden roles for an application:
use an
Authorization Policypattern with theForbidden Rolesto enforce and link it to the application viaAdditional Settings; - Enforce forbidden roles for some sub-paths of an application:
use an
Authorization Policypattern with theForbidden Rolesto enforce andApply only to sub-pathsset to the paths to protect. Link the pattern to the application viaAdditional Settings; - Enforce some main forbidden roles for an application and some specific forbidden roles for some sub-paths:
use two
Authorization Policypatterns, one with the mainForbidden Rolesand no sub-path, and one with the specificForbidden RolesandApply only to sub-pathsset to the paths where the specific forbidden roles should apply. Link both patterns to the application viaAdditional Settings. - Enforce some main forbidden roles for an application and disable them for some sub-paths:
use two
Authorization Policypatterns, one with the mainForbidden Rolesand no sub-path, and one with noForbidden RolesandApply only to sub-pathsset to the paths where no forbidden roles should be enforced. Link both patterns to the application viaAdditional Settings. - Enforce some forbidden roles for an application and add an authentication level for some sub-paths:
use two
Authorization Policypatterns, one with theForbidden Rolesfor the application,Forbidden Roles Modeset toself-contained, and no sub-path, and the other pattern with noForbidden Roles,Forbidden Roles Modeset toinherited, theAuthentication Levelfor the subpaths,Authentication Level Modeset toself-contained, andApply only to sub-pathsset to the paths where the authentication level should be enforced. Link both patterns to the application viaAdditional Settings.
Authentication Level
The Authentication Level defines the strength of authentication.
Enter a number between 2 and 9 (including).
If the session is not yet at the configured level a session upgrade will be performed.
Level 1 is the weakest possible authentication.
By definition this level is reached by the initial authentication flow,
e.g. set by a username / password authentication step (e.g. LDAP Login).
Level 2 is the default level set by steps
which do second factor authentication (e.g. Test TAN).
Levels 3 to 9 are not used by default. These levels
may be used for additional session upgrade processes.
For the session upgrade to succeed there must be a step which set at least this level.
This step must be assigned to Session Upgrade Flow(s) in the Authentication Realm pattern.
In case the upgrade flow consists of multiple steps
and the level should be reached by a subsequent step
assign the Advanced Session Upgrade pattern instead.
The authentication level defined for an application can be overridden for a sub-path by combining several Authorization Policy patterns for this application.
The authentication level can also be inherited between patterns. See Authentication Level Mode for details.
This setting requires assigning an Authentication Realm on the application pattern.
Usage examples:
- Enforce an authentication level for an application:
use an
Authorization Policypattern with theAuthentication Levelto enforce and link it to the application viaAdditional Settings; - Enforce an authentication level for some sub-paths of an application:
use an
Authorization Policypattern with theAuthentication Levelto enforce andApply only to sub-pathsset to the paths to protect. Link the pattern to the application viaAdditional Settings; - Enforce some main authentication level for an application and some specific authentication level for some sub-paths:
use two
Authorization Policypatterns, one with the mainAuthentication Leveland no sub-path, and one with the specificAuthentication LevelandApply only to sub-pathsset to the paths where the specific authentication level should apply. Link both patterns to the application viaAdditional Settings. - Enforce some main authentication level for an application and disable them for some sub-paths:
use two
Authorization Policypatterns, one with the mainAuthentication Leveland no sub-path, and one with noAuthentication LevelandApply only to sub-pathsset to the paths where no authentication level should be enforced. Link both patterns to the application viaAdditional Settings. - Enforce an authentication level for an application and add some required roles for some sub-paths:
use two
Authorization Policypatterns, one with theAuthentication Levelfor the application,Authentication Level Modeset toself-contained, and no sub-path, and the other pattern with noAuthentication Level,Authentication Level Modeset toinherited, theRequired Rolesfor the subpaths,Required Roles Modeset toself-contained, andApply only to sub-pathsset to the paths where the required roles should be enforced. Link both patterns to the application viaAdditional Settings.
Apply only to sub-paths
Set to apply this pattern on some sub-paths only.
Sub-paths must be relative (e.g. not starting with /)
and will be appended to the frontend path(s) of the virtual host (/)
or applications this pattern is assigned to.
Sub-paths ending with / are treated as a prefix,
otherwise an exact filter-mapping will be created.
The following table provides examples to illustrate the behavior:
| Frontend Path | Sub-Path | Effective Filter Mapping |
|---|---|---|
/ | secure/ | /secure/* |
/ | accounts | /accounts |
/ | api/secure/ | /api/secure/* |
/ | api/accounts | /api/accounts |
/app/ | secure/ | /app/secure/* |
/app/ | accounts | /app/accounts |
/app/ | api/secure/ | /app/api/secure/* |
/app/ | api/accounts | /app/api/accounts |
Required Roles Mode
The Required Roles Mode defines which Required Roles are set for the current paths.
When combining several Authorization Policy patterns for an application, this setting allow inheriting the Required Roles from a more general pattern.
Choose one of:
self-contained: TheRequired Rolesdefined in this pattern are applied to the current paths. They override anyRequired Rolesset on parents paths. If noRequired Rolesare set in the current pattern, no required roles will be enforced for the current paths.inherited: TheRequired Rolesin this pattern is not used. Use this setting if you have anotherAuthorization Policypattern applied to a parent path to inherit the configuration from. For theRequired Rolesto be inherited from a particular parent, this setting has to be set todefault (self-contained)in the parent pattern (otherwise you may inherit a value from a grandparent).
Forbidden Roles Mode
The Forbidden Roles Mode defines which Forbidden Roles are set for the current paths.
When combining several Authorization Policy patterns for an application, this setting allow inheriting the Forbidden Roles from a more general pattern.
Choose one of:
self-contained: TheForbidden Rolesdefined in this pattern are applied to the current paths. They override anyForbidden Rolesset on parent paths. If noForbidden Rolesare set in the current pattern, no forbidden roles will be enforced for the current paths.inherited: TheForbidden Rolesin this pattern is not used. Use this setting if you have anotherAuthorization Policypattern applied to a parent path to inherit the configuration from. For theForbidden Rolesto be inherited from a particular parent, this setting has to be set todefault (self-contained)in the parent pattern (otherwise you may inherit a value from a grandparent).
Authentication Level Mode
The Authentication Level Mode defines which Authentication Level is set for the current paths.
When combining several Authorization Policy patterns for an application, this setting allow inheriting the Authorization Level from a more general pattern.
Choose one of:
self-contained: TheAuthentication Leveldefined in this pattern is applied to the current paths. They override anyAuthentication Levelset on parent paths. If noAuthentication Levelis set in the current pattern, no authentication level will be enforced for the current paths.inherited: TheAuthentication Levelin this pattern is not used. Use this setting if you have anotherAuthorization Policypattern applied to a parent path to inherit the configuration from. For theAuthentication Levelto be inherited from a particular parent, this setting has to be set todefault (self-contained)in the parent pattern (otherwise you may inherit a value from a grandparent).
Automatic Key Store
Plugin: nevisadmin-plugin-nevisproxy Sets up a key store managed by nevisAdmin 4.
In classic deployment the private key is generated during deployment by running a command on the target host.
nevisAdmin then downloads the CSR and issues a certificate, which is deployed to the target host.
In Kubernetes deployment a custom resource definition (CRD) is generated and sent to the Nevis Operator running in the cluster.
Set the inventory variable __nevisadmin_pki_automatic_allowed_mode to restrict the allowed modes:
any(default) - assignment of key management patterns is optional.explicit- assign patterns where-ever a key store or trust store is required.
This example illustrates how the key store looks on the target system:
[root@nevis /]# ls -l /var/opt/keys/own/<name>/
total 40
-rw-r----- 1 root nvbgroup 1103 Dec 1 07:05 ca-chain.pem
-rw-r----- 1 root nvbgroup 1013 Dec 1 07:05 cert.pem
-rw-r----- 1 root nvbgroup 887 Dec 1 07:05 csr.pem
-rwxr-x--- 1 root nvbgroup 40 Dec 1 07:05 keypass
-rw-r----- 1 root nvbgroup 1675 Dec 1 07:05 key_pkcs1.pem
-rw-r----- 1 root nvbgroup 1704 Dec 1 07:05 key.pem
-rw-r----- 1 root nvbgroup 451 Dec 1 07:05 key_pub.pem
-rw-r----- 1 root nvbgroup 2053 Dec 1 07:05 keystore.jks
-rw-r----- 1 root nvbgroup 2309 Dec 1 07:05 keystore.p12
-rw-r----- 1 root nvbgroup 2688 Dec 1 07:05 keystore.pem
Owner(s)
Select an instance pattern which defines the target hosts of this Automatic Key Store.
This setting is required only when this pattern is assigned to an Automatic Trust Store.
Automatic Trust Store
Plugin: nevisadmin-plugin-nevisproxy Sets up a trust store managed by nevisAdmin 4.
In classic deployment the certificates of trusted key stores are deployed to the target host.
In Kubernetes deployment a custom resource definition (CRD) is generated instead and sent to the Nevis Operator running in the cluster.
Set the inventory variable __nevisadmin_pki_automatic_allowed_mode to restrict the allowed modes:
any(default) - assignment of key management patterns is optional.explicit- assign patterns where-ever a key store or trust store is required.
This example illustrates how the trust store looks on the target system:
[root@nevis /]# ls -l /var/opt/keys/trust/<name>/
total 16
-rwxr-x--- 1 root nvbgroup 16 Dec 1 07:05 keypass
-rw-r----- 1 root nvbgroup 1656 Dec 1 07:05 truststore.jks
-rw-r----- 1 root nvbgroup 2042 Dec 1 07:05 truststore.p12
-rw-r----- 1 root nvbgroup 2116 Dec 1 07:05 truststore.pem
Trusted Key Store
Assign one or multiple Automatic Key Store patterns to establish a trust relation.
Additional Trusted Cert(s)
Upload additional trusted certificates in PEM format.
The content of all files will be concatenated and added to the truststore.* files generated by this pattern.
You can make this a variable and upload the files in the inventory using the Attach files function.
Azure Service Bus
Plugin: nevisadmin-plugin-nevisidm
Configures a nevisIDM Instance to publish events into Azure Service Bus queues.
Queues can be reused, for example for handling time-based and other failures,
Dead Letter Queue and Expiry Queue pointed to the same Remote Queue with the same AzureServiceBusRemoteQueue pattern.
Remote Provisioning Queue
Remote Azure Service Bus Queue to which provisioning messages should be sent.
Remote Expiry Queue
Remote Azure Service Bus Queue to which Expiry messages should be sent.
Messages in Expiry Queue are those messages which validTo time has passed without successful receive action and without failing for other reason.
For further reference check NevisIdm Technical documentation > Configuration > Components > Provisioning module > Provisioning providers.
Remote Dead Letter Queue
Remote Azure Service Bus Queue to which Dead Letter messages should be sent.
Dead letter messages are those messages which are not in the expiryQueue and their delivery was unsuccessful.
For further reference check NevisIdm Technical documentation > Configuration > Components > Provisioning module > Provisioning providers.
Trust Store
Assign a trust store which provides the Microsoft Azure TLS Issuing CA 01 certificate.
You can access the Host name with your browser by adding https:// in front,
download the CA certificate, and then use a PEM Trust Store to provide it.
Azure Service Bus Remote Queue
Plugin: nevisadmin-plugin-nevisidm Configures an Azure Service Bus connection-string for Azure Service Bus pattern to use.
Host Name
Enter the complete Host name of the Service Bus as shown in the Azure portal.
Example: my-service-bus-name.servicebus.windows.net
Shared Access Policy
Enter the Policy that shall be used to connect.
Also known as: SAS Policy, Shared access policy
Primary Key
Enter the Primary Key of the Policy as shown in the Azure portal.
Queue
Enter the name of a queue.
BehavioSec Risk Plugin
Plugin: nevisadmin-plugin-nevisdetect The pattern configures BehavioSec risk scores to be integrated with nevisDetect.
For more information, see BehavioSec Developer Docs.
URL
Service URL used to connect to the BehavioSec service from the plugin.
For example: https://mycompany.behaviosec.com/BehavioSenseAPI/
Key Store
Used when simple or mutual (2-way) HTTPs is configured. If no pattern is assigned here automatic key management will provide the key store.
Trust Store
Reference a trust store provider pattern or leave empty to manage the trust store with nevisAdmin.
Proxy
Outbound proxy, optional
Web App URL
BehavioSec Dashboard URL
Fraudulent Flags
List of BehavioSec report flag names. Please add each entry line-by-line.
If any of these flags contains true value in the report, the request is marked as fraudulent and the request fails.
If the field remains empty, the items marked with (*) will be part of the default configuration.
Potential flag names (as of 5.4):
- advancedUser (*)
- autoModel
- coached (*)
- deviceChanged (*)
- deviceIdShared (*)
- deviceIntegrity (*)
- diError (*)
- drFlag (*)
- finalized
- ipChanged (*)
- ipShared (*)
- isDataCorrupted (*)
- isBot (*)
- isDuplicate (*)
- isOneHand
- isRemoteAccess (*)
- isReplay (*)
- isSessionCorrupted (*)
- isWhitelisted
- locationMismatch (*)
- newCountry (*)
- newsubprofile
- numpadAnomaly (*)
- numpadUsed
- numrowUsed
- ohFlag (*)
- otjsError (*)
- pdError (*)
- pnFlag (*)
- pocAnomaly (*)
- pocUsed
- tabAnomaly (*)
- tabUsed
- travelTooFast (*)
- uiConfidenceFlag (*)
- uiScoreFlag (*)
Flag / Description Mappings
List of BehavioSec report flag names with their description name in the following format: <flagName>=<descriptionName>. Please add each entry line-by-line.
If any of these flags contain true value in the report, it will be added to the respective header field along with the mapped description value.
To delete a default mapping, omit the description field's name: <flagName>=.
If the flag is part of the default mapping, it will be overwritten, otherwise added.
Default combined values (flag name/description name):
- advancedUser/advancedUserScore
- deviceChanged/deviceDesc
- deviceIntegrity/deviceIntegrityDesc
- diError/diDesc
- finalized/finalizeTimestamp
- isBot/botDesc
- isDuplicate/duplicateDesc
- isRemoteAccess/raDesc
- isReplay/replayDesc
- isSessionCorrupted/isSessionCorruptedDesc
- locationMismatch/locationMismatchDesc
- newCountry/ipCountry
- numpadUsed/numpadRatio
- otjsError/otjsDesc
- pdError/pdDesc
- pocUsed/pocRatio
- tabUsed/tabRatio
- travelTooFast/travelTooFastDesc
- uiConfidenceFlag/uiConfidence
- uiScoreFlag/uiScore
CSRF Protection Settings
Plugin: nevisadmin-plugin-nevisproxy
Customize CSRF protection for an application, for example, Web Application.
You can assign the pattern to Virtual Host patterns as well,
to configure CSRF protection for all applications on this host.
SameSite Cookie (Experimental)
Set to lax to issue a separate cookie with the SameSite flag set to lax.
In this configuration, links and redirects from other domains are allowed,
while CSRF-prone requests (e.g. POST) should be prevented by the browser.
Set to off to not send an additional cookie.
There are several reasons why this feature may be disabled:
-
Not all browsers support the
SameSiteflag and behave incorrectly by never sending the cookie. Older versions of IE and Windows may be affected. -
The
SameSiteflag breaks SAML use cases when POST binding is used. SP-initiated authentication does work with NEVIS but all other SAML process (e.g. logout) will fail.
Header-based Check
CSRF protection can be obstructive for some cross-domain use cases (e.g. federation or providing a public REST API).
Allowed Domains
CSRF protection can be obstructive for cross-domain use cases (e.g. federation or providing a public REST API).
Enter domains which should be excluded from header-based CSRF protection.
There is no support for wildcards, pre- or postfix notations (sub-domains must be listed individually).
Example:
www.adnovum.ch
adnovum.ch
Certbot Key Store
Plugin: nevisadmin-plugin-nevisproxy Sets up a key store that uses certbot to request a certificate from Let's Encrypt via the ACME protocol.
This pattern can only be used in classic deployment and requires that certbot is installed on the deployment host.
The pattern was tested in combination with nevisAppliance as Frontend Key Store in the Virtual Host pattern.
The pattern is experimental and provided as a proof of concept so that you can try it out.
If you need additional settings or want to use the pattern in another place, you may request a pattern improvement by raising a feature request with Nevis.
The certbot command will open a service on port 80 as the CA (Let's Encrypt) has to do a callback to validate the DNS name. The alternative mode (DNS01) is not supported.
This pattern generates the required command and also ensures that the nevisProxy instance is restarted, once the new key material is available.
Certbot will register a job that will renew the certificate before expiry.
Admin Email
Enter an email address.
The email will be handed over to the certbot command and can be used by the CA for urgent renewal and security notices.
If not configured, then an email will be determined based on primary domain of the Virtual Host.
That email will be noreply@<domain>.
Cookie Customization
Plugin: nevisadmin-plugin-nevisproxy Configure whether cookies are to be returned to the caller or stored in the user session.
You may also assign the pattern to multiple applications, and set Shared Protected Cookies
to share cookies between applications.
Note that cookie sharing is supported only for applications using the same session in nevisProxy, that is, applications protected by the same authentication realm.
The default cookie handling differs based on the type of application:
| Type | Behaviour | |---|---|---| | Web Application (with authentication) | Cookies are stored. | | Web Application (public) | Cookies are allowed to passthrough. | | REST API | Cookies are dropped. | | SOAP Service | Cookies are dropped. |
Client Cookies
Cookies listed here will be allowed to pass through.
Use for cookies which should be returned to the caller (e.g. browser).
Regular expressions are supported.
Example:
LANG.*
Shared Protected Cookies
Cookies listed here will be stored in nevisProxy and shared between all applications which have this pattern assigned.
Note that storing cookies requires a user session. Thus, we recommend to not use this feature for applications which are supposed to be stateless and public.
Regular expressions are supported.
Note that cookies matching ^Marker_.*$ will never be stored as a
corresponding allow rule is generated to support Session Expiration features of the SAML SP Realm.
Example:
LANG.*
Protected Cookies
Cookies listed here will be stored in nevisProxy.
However, cookies marked as Client Cookies in any Cookie Customization pattern
assigned to the same application will still be allowed to pass through!
Storing cookies requires a user session. Thus, we recommend to not use this feature for stateless or public applications!
Incoming cookies with the same name will be blocked.
Regular expressions are supported.
Example:
.*SESSION.*
Cookie Conflict Resolution
When multiple Cookie Customization patterns are used it happen that
a certain cookie is defined as both a Client Cookie and as a Shared Protected Cookie
for the same application.
By default, this conflict is resolved by allowing the cookie to pass-through, treating it as a Client Cookie.
This behavior is usually more robust but less secure as the cookie will be accessible in the browser.
Select protect to threat the cookie as a Shared Protected Cookie instead.
Credential Intelligence
Plugin: nevisadmin-plugin-nevisauth This plugin provides a step that checks the password against the Have I Been Pwned database.
The Have I Been Pwned database is a collection of passwords that have been exposed in data breaches. The step checks the password against the database and returns a configurable warning if the password is found in the database.
If you are using labels, please make sure the following labels are available in the translation:
credential_intelligence.title, credential_intelligence.message, credential_intelligence.continue_button, credential_intelligence.change_password_button
You can find these labels in the translation file Authentication Realm > Translations > Custom Translations, within
the corresponding language files (e.g.: labels_en.properties).
Example setting:
credential_intelligence.title=Credential Intelligence
credential_intelligence.message=You should change your password.
credential_intelligence.continue_button=Continue
credential_intelligence.change_password_button=Change Password
On Continue
This is the default next authentication step.
Notification Type
- Password Change Optional (password-change-optional)
In the Password Change Optional mode, the user has the flexibility to decide whether to change their password or not. This mode provides an option to disregard the message if the user chooses to do so.
- Password Change Mandatory (password-change-mandatory)
In the Password Change Optional mode, the user is required to change their password. This mode does not provide an option to disregard the message, ensuring that the password change is mandatory.
Title
It is a text field to change the title of the pages.
The default value is exci.title, which is used for translation.
Message
It is a text field to change the message of the pages.
The default value is exci.message, which is used for translation.
Continue Button Label
It is a text field to change the change password button's label.
The default value is exci.continue_button, which is used for translation.
On Change Password
Text field to change the change password button's label.
The default value is exci.change_password_button which is used for translation.
Change Password Button Action
This pattern is used when the user presses the "Change Password" button. It defines the follow-up authentication step required to complete the password change process.
Pattern when using nevisIDM as identity provider: nevisIDM Change Password State
Timeout
The HTTP timeout setting determines the maximum amount of time (in seconds) that the system will wait for an HTTP response before timing out.
If the response times out in the given time, it will not halt and use On Continue as default.
Custom Input Field
Plugin: nevisadmin-plugin-nevisauth A field to ask the user for some input and store the input in a variable.
Use the variable in subsequent authentication steps.
Label
Enter a text or litdict key to be displayed as label in front of the input field.
Source Variable
Enter a variable to populate the input field.
Use the syntax <scope>:<name>, where <scope> is one of:
sessnotesinargsrequest
Check your nevisAuth log with the log levels of Vars on INFO to find out which variables are available.
Target Variable
Enter <scope>:<name> of the variable which shall be set.
The following scopes are supported:
inargsnotessessorsession
For instance, enter notes:loginid to prefill the login form
which is produced by the nevisIDM Password Login pattern.
Optional
Input into the field is optional or mandatory.
Choose between:
optional- No input is required to the field.mandatory- Input is required to the field.
Custom Risk Score Weight Configuration
Plugin: nevisadmin-plugin-nevisadapt
Use the pattern for custom risk score weight configuration.
Every weight must be between 0 and 1 inclusive.
The higher the value the more impact the component has on the aggregate score.
Set the weight to 0 to disregard the analyzer completely.
Default values are the same as for Balanced configuration.
Geolocation Weight
Configuration of the risk score weight for the geolocation analyzer's risk score.
IP Weight
Configuration of the risk score weight for the ip analyzer's risk score.
IP Reputation Weight
Configuration of the risk score weight for the ip reputation analyzer's risk score.
IP Velocity Weight
Configuration of the risk score weight for the ip velocity analyzer's risk score.
Suspicious Country Weight
Configuration of the risk score weight for the suspicious country analyzer's risk score.
Device Cookie Weight
Configuration of the risk score weight for the device cookie analyzer's risk score.
Fingerprint Weight
Configuration of the risk score weight for the fingerprint analyzer's risk score.
Default Service
Plugin: nevisadmin-plugin-nevisproxy
Makes the configured Frontend Path(s) accessible
on the assigned Virtual Host(s) by mapping a DefaultServlet.
You can decorate the paths by assigning Additional Settings, for example,
to provide custom services using nevisProxy filters.
Note that if your request passes through the entire filter chain without being responded or redirected an error code 404 is returned.
The pattern is only to be used when there is no pattern for your use case. Whenever possible, use the following patterns instead:
Web Application,REST Service,SOAP Service: to make a backend application accessibleStandalone Authentication Flow: to provide an entry point for flows implemented in nevisAuthHosting Service: to host static resources
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Frontend Path(s)
The path(s) which shall be accessible on the assigned Virtual Host(s).
Additional Settings
Assign add-on patterns to customize the behavior of this service.
Example use cases:
Authorization Policyto enforce roles or an authentication level.URL Handlingto redirect or forward requests.HTTP Header Customizationto add, replace, or remove HTTP headers in requests or responses.
Dispatcher Button
Plugin: nevisadmin-plugin-nevisauth Adds a button to an authentication GUI which takes the user to another step.
A typical use case is to add a signup button to a login screen.
Button Label
Enter a label for the text that shall be displayed on this button.
The following labels exist by default:
accept.button.labelcancel.button.labelcontinue.button.labellogin.button.labelreject.button.labelsignup.button.labelskip.button.labelsubmit.button.label
If you want to use another label, you have to define it by providing Translations in your realm pattern.
On Click
Assign an authentication step to continue with when the button is clicked.
Button Type
Select inline here to display the button as a link.
Inline Label
Enter a label to be displayed in front of the button.
This setting is used only when Button Type is set to inline.
Button Name
Enter the name of the button.
If not set, the sanitized name of the pattern will be used.
Button Value
Enter the value of the button element.
The default (true) is usually fine.
Change this setting only when you need a different value.
Dispatcher Step
Plugin: nevisadmin-plugin-nevisauth Dispatch to other authentication steps based on nevisAuth expressions.
Condition(s)
Configure conditions.
The first column gives your condition a name.
The name must be unique and must be used in Transition(s).
In the second column enter an expression.
This may be a nevisAuth expression (${...}) or EL expression (#{...}).
See nevisAuth Technical Documentation for information about the expression syntax.
In EL expressions it is possible to reference variables from the inventory, an example can be found below.
All conditions will be evaluated and thus multiple conditions may apply.
In this case the combination of conditions in must be configured in Transition(s).
Examples:
| Key | Value |
|---|---|
| pwreset | ${request:currentResource:/pwreset:true} |
| sp | ${sess:ch.nevis.auth.saml.request.issuer:^SP$:true} |
| mfa | #{${var.mtanEnabled} or ${var.oathEnabled}} |
Transition(s)
Define how to dispatch based on conditions.
In the first column enter the transition. A transition may be:
- a condition
name - a comma-separated list of conditions
All conditions in the transition must match in order for the transition to be applicable. The most specific transition is chosen.
In the second column enter the position.
Position refers to the list of Conditional Step(s). The first step has position 1.
Examples:
| Transition | Position |
|---|---|
| pwreset | 1 |
| pwreset,mfa | 2 |
Conditional Step(s)
Assign the steps to be used for Transition(s).
Default Step
Assign the step to continue with if no transition matches.
Email Input Field
Plugin: nevisadmin-plugin-nevisauth An input field for an email address. A basic syntax check will be performed.
The entered value will be stored in a session variable. Use the variable in subsequent authentication steps.
Label
Enter a text or litdict key to be displayed as label in front of the input field.
Source Variable
Enter a variable to populate the email input field.
Use the syntax <scope>:<name>, where <scope> is one of:
sessnotesinargsrequest
Check your nevisAuth log with the log levels of Vars on INFO to find out which variables are available.
Target Variable
Configure the variable where nevisAuth stores the user input.
Use the syntax <scope>:<name>, where <scope> is one of:
sessorsessionnotesinargs
In most cases, you will want to use the session scope so the stored value is available to any later authentication step.
However, the notes scope can be useful when you need the value only within the current request, because notes variables are cleared afterward.
For example, if the next authentication step is nevisIDM Password Login, you can set notes:loginid to prefill the login form.
Email Validation
Customize the email validation regular expression.
The regular expression will be used in a Groovy script
and thus the \ character will be escaped in the generated script.
Optional
Input into the field is optional or mandatory.
Choose between:
optional- No input is required to the field.mandatory- Input is required to the field.
Email TAN (eTAN)
Plugin: nevisadmin-plugin-nevisauth Use to send a one-time code to a user via email.
You can use this pattern for email validation or authentication.
The defaults of this pattern work out-of-the-box when connected to On Success for nevisIDM Password Login.
If you have a different flow, you may have to adapt some settings.
For instance, you may have to adapt the Recipient to use the email from a different variable.
To configure the Gui or email content check the corresponding tabs.
On Success
Configure the step to execute after successful authentication. If no step is configured here the process ends and the user will be authenticated.
On Failure
Assign the step to execute in case no TAN code can be sent or all attempts had been exhausted.
The step will be executed in the following cases:
- the
Recipientcould not be determined - all attempts had been exhausted and the user has failed to authenticate
If no step is assigned then the authentication flow will be terminated
and an error GUI with label error_99 (System Problems) will be shown.
SMTP Server
The SMTP service for the sending the email code.
Choose between Sendgrid SMTP and a Generic SMTP patterns.
Buttons
Assign a Dispatcher Button to add a button which points to a different authentication step.
Sender
Sender email address.
Recipient
Enter a nevisAuth or EL expression for the recipient.
You have to ensure that this expression always resolves. There will be a system error if the expression does not produce an email address.
Examples:
${sess:ch.nevis.idm.User.email}
Subject
The subject for the email.
The default uses an expression which resolves a label.
This way the subject can be translated.
Body
The body of the email.
The default uses an expression which resolves a label.
This way the subject can be translated.
To keep things simple, the code is added with a second expression.
Gui Name
Change the name of the Gui element.
Change this only if you need the Gui name your login template to render the screen differently.
Gui Title
Change the Gui title.
We recommend to enter a label here and provide translations for this label in the Authentication Realm.
Show Email
Configure if the email address shall be shown in the UI or not.
Select disabled to not show the email address.
The label etan.info will be used in this case.
Select enabled here to also show the email address.
In this case, a different label etan.info.email will be used.
Button Order
Choose primary to show the primary button before any additional buttons.
Choose reverse to display the primary button last.
Max Retries
The maximum retry attempts for each code.
When this threshold is reached, the behavior depends on Max Regenerations.
As long as Max Regenerations is not exhausted, a new code will be generated and sent to the user.
Once Max Regenerations is reached as well, the On Failure exit will be taken.
Max Regenerations
The maximum number of times a new code can be generated.
If the value is 1 or greater, a resend button will be added to the screen.
The button is shown only when there are still resends left.
When you configure 0 there will only be 1 code and thus there will be no resend button.
Note that when Max Retries is reached, a new code will be generated and sent automatically.
TAN Format
The format of the TAN code that the user has to enter.
| Option | Format | Testing Mode Code |
|---|---|---|
4 digits | 4 numbers [0-9] | 1111 |
5 digits | 5 numbers [0-9] | 11111 |
6 digits | 6 numbers [0-9] | 111111 |
4 letters | 4 upper case letters [A-Z] | AAAA |
5 letters | 5 upper case letters [A-Z] | AAAAA |
6 letters | 6 upper case letters [A-Z] | AAAAAA |
4 alphanumeric | 4 out of [0-9A-Z] | AAA1 |
5 alphanumeric | 5 out of [0-9A-Z] | AAAA1 |
6 alphanumeric | 6 out of [0-9A-Z] | AAAAA1 |
Testing Mode
Select enabled to not send any code to the user.
No email will be sent and no SMTP Server needs to be assigned.
The code that needs to be entered depends on the selected TAN Format (see Advanced Settings).
Authentication Level
Set an authentication level if authentication of this step is successful. The level is relevant only if there are is an Authorization Policy assigned to applications.
Button Order
Choose primary to show the primary button before any additional buttons.
Choose reverse to display the primary button last.
FIDO2 Authentication
Plugin: nevisadmin-plugin-fido2 Use FIDO2 for passwordless authentication.
This step may be assigned for FIDO2 Authenticator in nevisIDM Second-Factor Selection.
Renders a Gui with name fido2_auth.
This Gui name is handled by the default Login Template (in js_end.vm) by including JavaScript.
The JavaScript then triggers authentication using the WebAuthn protocol.
You may allow users to opt out by assigning a step to On Cancel.
nevisFIDO FIDO2
Assign a nevisFIDO FIDO2 Instance.
On Success
Assign an authentication step to continue with after successful authentication.
On Cancel
If assigned a button with label 'cancel.button.label' will be added.
Use to provide an alternative to the user when the user decides to cancel the authentication or the authentication fails and the error cannot be handled.
User Verification
User verification is a crucial step during WebAuthn authentication process as it confirms that the person attempting to authenticate is indeed the legitimate user.
This setting allows to configure the user verification requirements for authentication.
Allowed values:
discouragedpreferredrequired
User Name
The username is used by nevisFIDO to look up the user in nevisIDM.
Depending on how the nevisFIDO FIDO2 Instance is configured, either the extId or the loginId have to be used.
AuthState Class
Select one of the available implementations.
When ScriptState is selected, all requests sent by JavaScript are directed towards nevisAuth.
The script takes care of the communication with the nevisFIDO component, and thus you can restrict access to nevisFIDO.
There is no need to expose any nevisFIDO APIs on the nevisProxy Virtual Host.
When Fido2AuthState is selected, configuration for Fido2AuthState is generated.
FIDO2 related requests are sent to nevisFIDO instead. This requires that the following nevisFIDO APIs
are exposed on the nevisProxy Virtual Host:
/nevisfido/fido2/attestation/options/nevisfido/fido2/assertion/result/nevisfido/fido2/status
The easiest way to ensure this is to add a nevisFIDO FIDO2 REST Service pattern to your project.
It is recommended to select the Fido2AuthState implementation as it is a more pragmatic solution whereas
the ScriptState is likely to be decommissioned.
This pattern is experimental and likely to change in future releases.
Authentication Level
Authentication level that is set on success.
FIDO2 Management Demo
Plugin: nevisadmin-plugin-fido2
DEMO/TESTING ONLY - NOT FOR PRODUCTION USE
Serves a simple HTML page with JavaScript to register a FIDO2 authenticator.
This is a simple and bare-bone example for demonstration and testing purposes and not intended for production use. It works only when the extId is used as username. Provide your own version adapted to your integration scenario.
For instance, use Hosting Service to deploy your HTML and JavaScript on a nevisProxy Virtual Host
or Generic Authentication Step when the registration shall be done within an authentication flow.
Visit the official WebAuthn Guide for further information on how to do FIDO2-based registration and authentication.
The nevisFIDO FIDO2 Instance must be exposed on the same Virtual Host
using nevisFIDO FIDO2 REST Service pattern.
In the nevisFIDO FIDO2 Instance pattern Relying Party ID and Relying Party Origins must be set correctly,
to allow AJAX calls from the JavaScript.
The client certificate used by nevisFIDO FIDO2 Instance must be uploaded as a certificate credential
for the nevisfido technical user. This should be done automatically in Kubernetes deployments but best double-check.
The credential type 23 must be allowed in the nevisIDM unit policy so that a FIDO2 Authenticator credential can be created for the authenticated user.
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Frontend Path
Enter the path where this example shall be exposed on the nevisProxy Virtual Host.
Authentication Realm
Optionally assign a realm to protect this application or service.
Additional Settings
Assign add-on patterns to customize the behavior of this service.
Example use cases:
Authorization Policyto enforce roles or an authentication level.URL Handlingto redirect or forward requests.HTTP Header Customizationto add, replace, or remove HTTP headers in requests or responses.
FIDO2 Onboarding
Plugin: nevisadmin-plugin-fido2 Use for onboarding when the user has no FIDO2 credential in nevisIDM.
This step may be used as a follow-up of Not Found in nevisIDM Second-Factor Selection.
This step renders Guis with name fido2_onboard.
This Gui name is handled by the default Login Template (in js_end.vm) by including JavaScript files:
base64.jsfido2_utils.jsfido2_onboard.js
The JavaScript triggers device onboarding using the WebAuthn protocol when the Continue or Try Again button is clicked.
These buttons have a special name onclick which is handled in the logrend template by adding onClick.
You may allow users to opt out by assigning a step to On Cancel.
nevisFIDO FIDO2
Assign a nevisFIDO FIDO2 Instance.
On Success
Assign an authentication step to continue with after successful FIDO2 onboarding.
On Unsupported
Assign a step to continue with when the browser does not support FIDO2 WebAuthn.
On Cancel
If assigned a skip button will be added.
Use to provide an alternative to the user.
The button is defined by the label info.signup.passwordless.skip and looks like a link.
Translations for this label must include a button with name cancel-bottom. Example:
<button name="cancel-bottom" type="submit" value="true" class="btn btn-link link-primary">Skip for now</button>
User Name
The username is used by nevisFIDO to look up the user in nevisIDM.
Depending on how the nevisFIDO FIDO2 Instance is configured, either the extId or the loginId have to be used.
Display Name
Enter a 1 line Groovy statement to determine the displayName
included in the call to the Registration Options Service.
The statement must produce a String.
The displayName is required by nevisFIDO
and may be shown to the user by some devices.
Examples:
"${session['ch.nevis.idm.User.firstName']}_${session['ch.nevis.idm.User.name']}"
Authenticator Type
Describes the authenticators' attachment modalities.
Allowed values:
any- does not set a specific value accepting the standard's defaultplatform- indicates a platform authenticator, such as Windows Hellocross-platform- indicates a roaming authenticator, such as a security key
Resident Key
WebAuthn enables high assurance multi-factor authentication with a passwordless login experience. One of the things that enables this is what is called Discoverable Credentials, also referred to as resident keys. This property specifies the extent to which the Relying Party desires to create a client-side discoverable credential.
Allowed values:
unspecifieddiscouragedpreferredrequired
User Verification
User verification is a crucial step during WebAuthn authentication process as it confirms that the person attempting to authenticate is indeed the legitimate user.
This setting allows to configure the user verification requirements for onboarding.
Allowed values:
discouragedpreferredrequired
Attestation
Define the preference for attestation conveyance.
You can configure if you want an attestation statement.
none- no attestation statement required.direct- receive an attestation statement as produced by the authenticator.indirect- requests an attestation statement but allows the client to modify what has been received from the authenticator (e.g. for anonymization).
Welcome Screen Button(s)
Configure to add a dispatcher button to the welcome screen.
The button may have a special Button Name to render in a nice way by a customized Login Template.
For instance, Identity Cloud uses this mechanism to add a button which looks like a back arrow. This button takes the user to a previous step.
This is an advanced setting. Use only when you understand the concept.
Failed Screen Button(s)
Configure to add a dispatcher button to the failed screen.
The button may have a special Button Name to render in a nice way by a customized Login Template.
For instance, Identity Cloud uses this mechanism to add a button which looks like a back arrow. This button takes the user to a previous step.
This is an advanced setting. Use only when you understand the concept.
Button Order
Choose primary to show the primary button before any additional buttons.
Choose reverse to display the primary button last.
Facebook Login Step
Plugin: nevisadmin-plugin-oauth Set up social login, using Facebook as OpenID Connect provider.
Client ID
ClientID is App ID provided by Facebook when you register Facebook as IdP service.
Client Secret
Client Secret is App Secret provided by Facebook when you register Facebook as IdP service.
Return Path
The callback URI to go to after a successful login with Facebook.
This will create an endpoint in your host config.
The URL will be a combination of the Frontend Address of the Virtual Host and the value configured here.
For example, let's assume that you have configured:
- Return Path:
/oidc/facebook/ - Frontend Address:
https://nevis.net
Then the URL will be https://nevis.net/oidc/facebook/.
Use the exact: prefix to use the given path as-is.
Without this prefix a normal mapping with /* will be generated and thus sub-paths will be accessible as well.
Scope(s)
Select the request scopes for getting user information from Facebook.
The default is email and thus minimal information will be returned.
Select public_profile to return additional user information.
Scope offline_access is not supported as Facebook has removed this scope.
Virtual Host
Assign a Virtual Host which shall serve as entry point for the callback from social login provider.
In case your host has
- 1 address, that address will be used
- many addresses with
- 1 https, and many http, the https will be used without warning
- mix between http and https, the 1st https will be used with warning
- single scheme (http or https only) the 1st address will be used with warning
E.g.
http://nevis.net
http://nevis-security.net
https://nevis.net
https://nevis-security.net
The https://nevis.net will be used as the host for Apple callback
On Success
The step executed after a successful authentication.
If no step is configured here the process ends with AUTH_DONE.
In case you change this to your custom step(s),
you can assign pattern Social Login Final Step as the last step of the Authentication process
to redirect back to original URL.
On Failure
The step that will be executed if the authentication fails.
If no step is configured here the process ends with AUTH_ERROR.
In case you change this to your custom step(s),
you can assign pattern Social Login Final Failure Step as the last step of the Authentication process
to redirect back to original URL.
nevisIDM
Choose which nevisIDM instance you want to store the user's information after logged in with social login provider.
Client External ID
The ExtId of the client in nevisIDM that will be used to store the user
On User Not Found
Configure the authentication flow to be executed when no user was found and the email provided by social account does not exist.
The authentication flow must contain the Social Login Create User pattern if a new user shall be created.
Note: Please select scope email and profile for getting user's information from social account.
On User Found
Configure the Authentication Flow in case no user with Subject/ID from social account was found but email does exist in nevisIDM. The Authentication Flow must contain:
Social Login Link Userpattern to link an existing user in IDM with Subject/ID of social account.Social Login Doneto end the social login flow after some other action(s).
Note: Please select scope email and profile for getting user's information from social account.
Claims Request
The claims request parameter. This value is expected to be formatted in JSON and does not accept trailing spaces nor tabs.
User ID Field
Logged userId will automatically get from social account. But you can change the userId by using this field.
Additional Auth Request Parameters
Arbitrary additional request parameters used in the authentication request. The property supports variable substitution.
Example:
[paramName]=[paramValue]
Button Label
Enter the text that should be displayed for the end-user on the social login button, and provide translations for this label on the Authentication Realms.
Gateway API Rate Limit Rule
Plugin: nevisadmin-plugin-nevisproxy Defines a rate limiting rule for the Gateway API.
Max Requests
Configure the maximum number of requests allowed in the selected time period.
Time Period
Configure the time period over which the rate limit is applied (for example, per second, per minute, or per hour).
Gateway API Settings
Plugin: nevisadmin-plugin-nevisproxy
In Kubernetes deployments, a Gateway API controller terminates TLS connections and forwards requests to nevisProxy.
Basic settings are available in the Gateway API tab in the Virtual Host pattern.
This pattern provides additional options, e.g. related to TLS secrets and client certificate authentication.
Assign the pattern to your Virtual Host using Additional Settings.
TLS Secrets
Configure custom TLS certificate(s) for your domain(s).
Enter the fully qualified domain name (FQDN) in the key column and the name of the Kubernetes Secret in the value column.
The domain names correspond to the Frontend Addresses of your Virtual Host which use the HTTPS protocol.
The referenced Kubernetes Secret must:
- Be of type
kubernetes.io/tls - Contain the following entries in data:
tls.key– the private key (PEM encoded)tls.crt– the certificate (PEM encoded, including the full certificate chain is recommended)
If multiple domains use the same certificate, you can reference the same Secret for each domain.
Gateway Class Name
Defines the gatewayClassName of the generated NevisGateway resource.
Gateway Resource Name
Configure to use an existing Gateway resource.
If not configured, the resource will be created by the Nevis Operator.
Gateway Resource Namespace
Configure to use an existing Gateway resource.
If not configured, the resource will be created by the Nevis Operator.
If set to a different namespace than the deployment, then the IP Detection, Client Cert Auth and Key Exchange Algorithms settings will be ignored.
Key Exchange Algorithms
Configure the allowed key exchange algorithms for TLS connections.
By default, the default of the gateway applies.
Currently, the post-quantum hybrid X25519MLKEM768
and the legacy X25519 and P-256 algorithms are supported.
If Gateway Resource Namespace is set to a different namespace than the deployment, then this setting will be ignored.
Client IP Detection
Choose how to determine the source IP of the request.
The source IP is used by Envoy for the following optional features:
IP RestrictionRate Limiting
Choose between:
disabled: use the source IP of the incoming TCP request. This option is appropriate when there are no proxies in front of the cluster.trusted CIDRs:- IPs found in
X-Forwarded-Forthat match these CIDR expressions will be ignored. - This option is recommended when you know the outbound IPs of proxies in front of the cluster.
- You have to configure
Trusted CIDR Rangesto use this option.
- IPs found in
trusted hops:- You have to configure
Trusted Hopsto use this option. - Use the n-th IP address from the
X-Forwarded-Forheader, counting from the rightmost side.
- You have to configure
If Gateway Resource Namespace is set to a different namespace than the deployment, then these settings will be ignored.
Trusted Hops
NumTrustedHops specifies how many trusted hops to count from the rightmost side of the X-Forwarded-For (XFF) header when determining the original client’s IP address.
If this value is set to N, the client IP is taken from the Nth address from the right end of the XFF header.
Trusted CIDR Ranges
List of CIDR ranges to trust when evaluating the remote IP address to determine the original client’s IP address.
When the remote IP address matches a trusted CIDR and the x-forwarded-for header was sent, each entry in the x-forwarded-for header is evaluated from right to left and the first public non-trusted address is used as the original client address.
If all addresses in x-forwarded-for are within the trusted list, the first (leftmost) entry is used.
Action Type
Action defines whether to allow or deny the specified IP ranges.
CIDR Ranges
List of CIDR ranges to which the Action Type applies.