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) pipeline replaces markers in generated files before deployment. The pattern generator removes every placeholder:// prefix and preserves the remaining text unchanged. It does not resolve or replace the marker.
These enhancements are available in nevisAdmin 4 Patterns version >= 9.2605.4 in the RR line and >= 8.2607.2 in the LTS26 line.
The syntax is:
placeholder://<marker-name>
The marker name may contain only ASCII letters, digits, underscores, and hyphens. For example:
placeholder://WASL_DOMAIN
placeholder://@@WASL_DOMAIN@@
The @@ characters are optional delimiters for making markers easy to identify; they are not part of the marker name. Bare markers may occur inside a larger scalar and end at the first character outside the marker-name character set:
https://login.placeholder://tenant-prod.example
The marker in this example is tenant-prod; .example remains unchanged. A scalar can contain multiple markers:
placeholder://@@ALLOWED_IP_RANGE_1_FROM@@ - placeholder://@@ALLOWED_IP_RANGE_1_TO@@
Do not put Helm, Kustomize, Jsonnet, Argo CD, shell, or other deployment-tool template expressions inside a marker. For example, this is not supported:
placeholder://{{ .Values.domain }}
Do not use a complete unresolved URL as a placeholder:
placeholder://https://login.example/issuer
nevisAdmin 4 does not interpret the marker or know which CI/CD tool will process the generated files. The CI/CD pipeline is responsible for replacing the remaining marker before deployment. The replacement must preserve the generated configuration syntax and structure.
Use placeholders only where the setting accepts a scalar value and the pattern can generate its configuration without interpreting the marker. If a pattern validates, parses, or uses the value to choose a generation branch, such as a dropdown or other selection that produces different configuration, a placeholder cannot be used. A placeholder represents one scalar or one sequence item; it does not expand into multiple items, a sequence, a map, or another structured value.
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).
Custom Parameters
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.
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.
Rate Limiting Rules
Assign rules to define rate limits based on the source.
Client Cert Authentication
Enables client certificate validation.
If you want to validate a client cert used by the user agent, and the TLS connection is terminated in front of the Gateway API controller, then you cannot use this setting.
Choose between:
-
required: Request a client cert that must be signed by a CA cert that is included in theCA Secret. Failed verification will result in a TLS handshake error. -
optional: Do optional client cert validation against the CAs.- When no client cert is provided, the request is allowed to pass through.
- When a client cert is provided, it the logic is the same as for
required.
-
disabled(default): Don't request client certificates and don't do client cert verification.
If Gateway Resource Namespace is set to a different namespace than the deployment, then these settings will be ignored.
CA Secret
Enter the name of the Kubernetes secret which contains the CA certificate in the key ca.crt.
If the secret does not exist, it will result in 403 (Forbidden),
and with a missing ca.crt key the feature will not be enabled.
Can be created with:
kubectl create secret generic ca-secret --from-file=ca.crt=ca.crt
The ca.crt file can contain multiple certificates.
CA Secret Namespace
Enter the namespace of the CA Secret.
Path Match Type
Specifies how to match the HTTP request path.
| Value | Description |
|---|---|
PathPrefix | Matches requests whose path starts with the configured prefix. Default. |
Exact | Matches requests whose path is exactly equal to the configured value. |
RegularExpression | Matches requests whose path matches the configured regular expression. Implementation-specific support. |
See HTTPPathMatch for details.
Path Value
The HTTP path to match against. Defaults to /.
For Exact and PathPrefix types the value must start with / and must not contain consecutive slashes or path traversal sequences.
Example: /nevis/
Generic Application Settings
Plugin: nevisadmin-plugin-nevisproxy
Customize the web.xml configuration for an application
using XML constructs as described in the nevisProxy Technical Documentation.
Use as add-on for Web Application, SOAP Service, or REST Service.
The following expressions may be used for all applications:
${name}: sanitized name of the pattern${service.name}: the name of the application${service.id}: the unique ID of the application${host.key}: use asEntryPointIDwhen adding a customIdentityCreationFilter(advanced use case)
For applications with only 1 Frontend Path:
${service.path}: the frontend path of the application, excluding trailing slash/and asterisk*${service.mapping}: theurl-patterncalculated for the frontend path of the application
In case an Authentication Realm is assigned:
${realm.name}: name of the realm (use forStateKey/DelegateSource)${auth.connector}: name of theEsauth4ConnectorServlet(use forAuthenticationServlet)${logrend.renderer}: name of theLoginRendererServlet${logrend.connector}: name of theHttp(s)ConnectorServletfor nevisLogrend (if nevisLogrend is used)
When defining filters it is recommended to set Filter Mappings to automatic.
This way the filters are mapped to all frontend paths of the application.
Filters and Mappings
Configure filters and their mappings using the XML syntax described in the nevisProxy Technical Documentation.
Filters that have the same name as other filters (even those defined by other patterns)
will be combined: the init-param sets will be merged where possible.
Direct contradictions are interpreted as validation failures.
Example 1: Create (or patch) a filter with a fixed name
<filter>
<filter-name>SomeName</filter-name>
<filter-class>ch::nevis::isiweb4::filter::SomeClass</filter-class>
<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
</init-param>
</filter>
Example 2: Create (or patch) a filter using an application-specific name
<filter>
<filter-name>SomeName_${service.name}</filter-name>
<filter-class>ch::nevis::isiweb4::filter::SomeClass</filter-class>
...
</filter>
Example 3: Map a filter to a sub-path of the assigned application(s). This example works for applications which have 1 frontend path only.
<filter-mapping>
<filter-name>SomeFilter</filter-name>
<url-pattern>${service.path}/custom/*</url-pattern>
</filter-mapping>
Example 4: Use multi-value expressions
Multi-value expressions replicate an entire line for each associated value.
Use the expressions *{service.path} and *{service.mapping} to generate filters
which must contain the frontend paths of all assigned applications.
The following snippet is not complete but should illustrate the concept:
<filter>
<filter-name>FormSigning</filter-name>
<filter-class>ch::nevis::isiweb4::filter::validation::EncryptionFilter</filter-class>
<init-param>
<param-name>EntryURL</param-name>
<param-value>
*{service.path}/
</param-value>
</init-param>
...
</filter>
Filter Mappings
Choose between:
manual(default): only thefilter-mappingelements which have been configured viaFilters and Mappingswill be added.automatic: filters configured viaFilters and Mappingswill be mapped to allFrontend Pathsof the application.both: likeautomaticbut additionalfilter-mappingelements are allowed as well.
Filter Phase
When adding filter-mapping elements, a phase must be defined.
The phase defines where the filter-mapping is placed in the web.xml and ensures that filters
are applied in the right order, relative to other phases.
The order within a certain phase is undefined as it must not matter.
The order for requests is START to END and END to START for responses.
This setting applies to all filter-mapping elements.
The filter-mapping elements may be provided via Filters and Servlets,
or created automatically (see Filter Mappings for details).
Choose from the following filter phases:
START: applied as early as possible for requests and as late as possible for responses.BEFORE_SANITATION: applied before filters which validate the request (e.g. Mod Security).SANITATION: used for security. This is the first phase which allows accessing the session for applications protected by a realm.AFTER_SANITATION: your request has passed security checks.BEFORE_AUTHENTICATION: applied just before authentication.AUTHENTICATION: used by the filter which connects to nevisAuth for applications which are protected by anAuthentication Realm.AFTER_AUTHENTICATION: the request has level 1 authentication. Used byAuthorization PolicyforAuthentication Levelstepup.BEFORE_AUTHORIZATION: choose this phase to do preprocessing before authorization.AUTHORIZATION: used byAuthorization PolicyforRequired Rolescheck.AFTER_AUTHORIZATION: used by patterns assigned asApplication Access Tokento applications.END: applied as late as possible for requests and as early as possible for responses.
This setting is ignored when you patch a filter generated by another pattern
(e.g. by adding, overwriting, or removing an init-param element) but don't create any filter-mapping element.
Servlets and Mappings
Configure servlet and/or servlet-mapping elements
using the XML constructs described in the nevisProxy Technical Documentation.
You may add new elements or customize elements provided by other patterns.
- Reference a
servletby settingservlet-name. UseConnector_${service.name}for the servlet which connects to the backend application. - Reference a
servlet-mappingby settingurl-pattern.
In Kubernetes side-by-side deployment a postfix is added to service names.
Use the expression ${service.postfix} connecting to a service deployed against the same inventory.
Example 1: Add or overwrite an init-param:
Enable load-balancing when there are multiple backend servers.
<servlet>
<servlet-name>Connector_${service.name}</servlet-name>
<init-param>
<param-name>LoadBalancing</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Instruct nevisProxy to a add Content-Type header when missing.
<servlet>
<servlet-name>Connector_${service.name}</servlet-name>
<init-param>
<param-name>ProxyPolicy</param-name>
<param-value>mime-completion</param-value>
</init-param>
</servlet>
Example 2: Remove an init-param (no param-value provided):
<servlet>
<servlet-name>Connector_${service.name}</servlet-name>
<init-param>
<param-name>CookieManager</param-name>
</init-param>
</servlet>
Example 3: Change the servlet-mapping for an application to use a different servlet
by changing servlet-name.
<servlet>
<servlet-name>Connector_Conditional_${service.name}</servlet-name>
<servlet-class>ch::nevis::isiweb4::servlet::mapping::ServletMappingServlet</servlet-class>
...
</servlet>
<servlet-mapping>
<servlet-name>Connector_Conditional_${service.name}</servlet-name>
<url-pattern>${service.path}/*</url-pattern>
</servlet-mapping>
Removing servlet or servlet-mapping elements is not supported.
Template Parameters
Define Template Parameters.
Examples:
backend-host: backend.siven.ch
These parameters can be used in:
Servlets and MappingsFilters and Mappings
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Remove Filter Mappings
Remove <filter-mapping> elements generated by other patterns.
The syntax is a map of <filter-name>:<url-pattern>, according to elements from the web.xml.
In the <filter-name> the expressions ${service.name} and ${realm.name} may be used.
For applications which have only 1 frontend path you may use ${service.mapping} instead of <url-pattern>.
Examples:
ModSecurity_${service.name}:${service.mapping}
Authentication_${realm.name}:${service.mapping}
Generic Authentication Realm
Plugin: nevisadmin-plugin-nevisauth
Create a realm by providing the entire configuration as XML.
We recommend you use the higher level Authentication Realm instead.
Token patterns, for example, Nevis SecToken and JWT Token, are not supported.
To issue a token, add the required AuthState, for example, TokenAssemblerState, to the authentication flow,
and assign a HTTP Header Customization pattern to the application to ensure that the token is sent to the backend.
There are several ways to trigger a stepup:
- use
Authorization Policyto demand anAuthentication Level - use
Generic Application Settingsto map aSecurityRoleFilterwhich hasDynamicRoleAcquireset totrue
For rendering login pages during authentication the nevisLogrend component is used. nevisLogrend is deployed on the same hosts as nevisProxy.
Configuration
Upload an XML file containing AuthState elements.
Upload of a complete esauth4.xml is not supported.
The Domain element is optional.
-
If missing the element will be created. The
Entrymethodsauthenticateandstepupwill be set to the first providedAuthState. The methodlogoutis not set and thus the nevisAuth default behavior applies. -
If provided the
Domainmust come before allAuthStateelements. The attributesnameanddefaultare not supported and should be omitted. Attributes are sorted by name. TheEntryelements are sorted bymethod.
The AuthState linked to stepup should be able to dispatch the request.
For instance, you may have assigned an Authorization Policy to your application(s)
and thus you need a state which decides based on the request variable requiredRoles.
The following example dispatches level 2 into an AuthState named TAN
which provides authentication via mTAN:
<AuthState name="EntryDispatcher" class="ch.nevis.esauth.auth.states.standard.ConditionalDispatcherState" final="false">
<ResultCond name="nomatch" next="Authentication_Done"/>
<ResultCond name="level2" next="TAN"/> <!-- TAN state is expecetd to set authLevel="2" -->
<Response value="AUTH_ERROR">
<Arg name="ch.nevis.isiweb4.response.status" value="403"/>
</Response>
<property name="condition:level2" value="${request:requiredRoles:^2.*$:true}"/>
</AuthState>
The following expressions are supported:
${instance}: name of the nevisAuth instance${request_url}: generates a nevisAuth expression which returns the URL of the current request${realm}: name of the Realm (see below)${keystore}: name of theKeyStoreelement provided by this pattern. Assign a pattern toKey Objectsto add aKeyObjectinto thisKeyStore.
The name of AuthState elements is prefixed
with the sanitized name of the Realm (referred to as ${realm}).
The realm prefix must be added when using propertyRef to reference AuthStates
generated by other patterns (e.g. <propertyRef name="${realm}_SomeState"/>).
An exception is the AuthState which defines the nevisIDM connection
(as generated by nevisIdm Password Login or nevisIDM Connector for Generic Authentication).
Here the propertyRef must be defined as follows:
<propertyRef name="nevisIDM_Connector"/>
This pattern does not validate that labels are translated.
Translations can be provided on the Authentication Realm pattern.
Template Parameters
Define Template Parameters.
Examples:
smtp: smtp.siven.ch
These parameters can be used in your Configuration.
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Resources
In case your AuthState elements require additional configuration files or scripts upload them here.
Files uploaded here will be deployed into the conf directory of the nevisAuth instance.
Key Objects
Assign patterns to add KeyObject elements to the KeyStore provided by this pattern.
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.
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 provide human-readable text in the language of the user.
The language is extracted from the Accept-Language header
and the default login page template has a language selection.
Which labels are used depends on the assigned steps.
Click Download Default Labels to retrieve the labels used and their translations.
Here you can overwrite the defaults and add your own translations or even introduce new labels
which may be required when using a Custom Login Template or Generic Authentication Step patterns.
The name of uploaded files must end with the language code.
As the format is compatible you may upload existing text_<code>.properties files of nevisLogrend
or LitDict_<code>.properties of nevisAuth.
The encoding of uploaded files does not matter as long as all translations are HTML encoded.
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)
produces a confirmation GUI which requires 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 |
Custom Dependencies
In case your AuthState elements use custom classes upload the required JAR file(s) here.
Files uploaded here will be deployed into the lib directory of the nevisAuth instance.
Generic Authentication Service
Plugin: nevisadmin-plugin-nevisauth
Defines an authentication service which is exposed
on the given Frontend Path on the assigned Virtual Host.
Requests received on this path are forwarded to nevisAuth.
Use to import an existing configuration.
We recommend you implement complex self-service and registration processes in a dedicated application, for example, using the SOAP or REST API of nevisIDM.
The pattern can also provide authentication for applications exposed on nevisProxy,
see Generic Authentication Realm for details.
Virtual Host(s)
Assign a Virtual Host which shall serve
as entry point for this authentication service.
Frontend Path
Define a path to be mapped on the assigned virtual host.
Requests sent to this path will be forwarded to nevisAuth so that they can be handled by this authentication service.
Configuration
Enter AuthState elements as XML.
The Domain element is optional.
-
If missing the element will be created. The
Entrymethodsauthenticateandstepupwill be set to the first providedAuthState. The methodlogoutis not set and thus the nevisAuth default behavior applies. -
If provided the
Domainmust come before allAuthStateelements. The attributesnameanddefaultare not supported and should be omitted. Attributes are sorted by name. TheEntryelements are sorted bymethod.
The AuthState linked to stepup should be able to dispatch the request.
For instance, you may have assigned an Authorization Policy to your application(s)
and thus you need a state which decides based on the request variable requiredRoles.
The following example dispatches level 2 into an AuthState named TAN
which provides authentication via mTAN:
<AuthState name="EntryDispatcher" class="ch.nevis.esauth.auth.states.standard.ConditionalDispatcherState" final="false">
<ResultCond name="nomatch" next="Authentication_Done"/>
<ResultCond name="level2" next="TAN"/> <!-- TAN state is expected to set authLevel="2" -->
<Response value="AUTH_ERROR">
<Arg name="ch.nevis.isiweb4.response.status" value="403"/>
</Response>
<property name="condition:level2" value="${request:requiredRoles:^2.*$:true}"/>
</AuthState>
The following expressions are supported:
${instance}: name of the nevisAuth instance${request_url}: generates a nevisAuth expression which returns the URL of the current request${realm}: name of the Realm (see below)${service_url}: generates a nevisAuth expression which evaluates to true for requests received on the configuredFrontend Path${service.postfix}: in Kubernetes side-by-side deployment a postfix is added to service names. Use this expression when connecting to a service deployed against the same inventory.${keystore}: name of theKeyStoreelement provided by this pattern. Assign a pattern toKey Objectsto add aKeyObjectinto thisKeyStore.
The name of AuthState elements is prefixed
with the sanitized name of the Realm (referred to as ${realm}).
The realm prefix must be added when using propertyRef to reference AuthStates
generated by other patterns (e.g. <propertyRef name="${realm}_SomeState"/>).
An exception is the AuthState which defines the nevisIDM connection
(as generated by nevisIdm Password Login or nevisIDM Connector for Generic Authentication).
Here the propertyRef must be defined as follows:
<propertyRef name="nevisIDM_Connector"/>
This pattern does not validate that labels are translated.
Translations can be provided on the Authentication Realm pattern.
Template Parameters
Define Template Parameters.
Examples:
smtp: smtp.siven.ch
These parameters can be used in your Configuration.
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Resources
In case your AuthState elements require additional configuration files or scripts upload them here.
Files uploaded here will be deployed into the conf directory of the nevisAuth instance.
Key Objects
Assign patterns to add KeyObject elements to the KeyStore provided by this pattern.
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.
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 provide human-readable text in the language of the user.
The language is extracted from the Accept-Language header
and the default login page template has a language selection.
Which labels are used depends on the assigned steps.
Click Download Default Labels to retrieve the labels used and their translations.
Here you can overwrite the defaults and add your own translations or even introduce new labels
which may be required when using a Custom Login Template or Generic Authentication Step patterns.
The name of uploaded files must end with the language code.
As the format is compatible you may upload existing text_<code>.properties files of nevisLogrend
or LitDict_<code>.properties of nevisAuth.
The encoding of uploaded files does not matter as long as all translations are HTML encoded.
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)
produces a confirmation GUI which requires 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 |
Custom Dependencies
In case your AuthState elements use custom classes upload the required JAR file(s) here.
Files uploaded here will be deployed into the lib directory of the nevisAuth instance.
Frontend Path Settings
Assign add-on patterns to customize the Frontend Path.
Generic Authentication Step
Plugin: nevisadmin-plugin-nevisauth
Define an authentication step using XML elements as described in the nevisAuth reference guide.
An authentication step consists of one or multiple AuthState elements which belong together,
for example, username / password login against LDAP with enforced password change.
The name attribute of GuiElem elements must be unique within a Gui.
Configuration
Upload an XML file containing AuthState elements.
Example to illustrate the syntax:
<AuthState
name="${state.entry}"
class="ch.nevis.esauth.auth.states.standard.ThrottleSessionsState"
final="false">
<ResultCond name="ok" next="${state.done}" />
<Response value="AUTH_ERROR">
<Gui name="AuthErrorDialog"/>
</Response>
<property name="queryValue" value="${request:userId}" />
</AuthState>
See Standard authentication AuthStates and plug-ins for further examples.
The following expressions may be used:
${instance}: name of the nevisAuth instance.${request_url}: generates a nevisAuth expression which returns the URL of the current request${realm}: name of the Realm (see below)${state.entry}: use asnameto mark the firstAuthState.${state.done}: use asnextinResultCondelements to exit this step and continue withOn Success.${state.failed}: use asnextinResultCondelements to exit this step and continue withOn Failure.${state.exit.<index>}: use asnextinResultCondelements to exit this step and continue with anAdditional Follow-up Step(s). The index starts with1.${state.level}: must be used if anAuthentication Levelhas been defined. Use asauthLevelonResultCondelements which point to${state.done}.${keystore}: name of theKeyStoreelement provided by this pattern. Assign a pattern toKey Objectsto add aKeyObjectinto thisKeyStore.${service.postfix}: in Kubernetes side-by-side deployment a postfix is added to service names. Use this expression when connecting to a service deployed against the same inventory.${var.<name>}: insert the scalar variable<name>. This is an alternative to usingTemplate Parameters.
The name of AuthState elements is prefixed
with the sanitized name of the Realm (referred to as ${realm}).
The realm prefix must be added when using propertyRef to reference AuthStates
generated by other patterns (e.g. <propertyRef name="${realm}_SomeState"/>).
An exception is the add-on pattern nevisIDM Connector for Generic Authentication which does not set a prefix.
Here the propertyRef must be defined as follows:
<propertyRef name="nevisIDM_Connector"/>
This pattern does not validate that labels are translated.
Translations can be provided on the Authentication Realm pattern.
Template Parameters
Define Template Parameters.
The syntax is a multi-line String containing a YAML map (key-value pairs). Example:
smtp: smtp.siven.ch
doctype: "<!DOCTYPE html>"
counter: 1
As shown in the example above,
double quotes " need to be put around the value if the value contains special characters.
Parameters can be used in:
AuthState(s): direct inputAuthState(s): as file
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
On Success
Use ${state.done} to continue with the assigned step.
If no step is assigned and ${state.done} is found an AuthState named <Realm>_Prepare_Done will be used instead.
On Failure
Use ${state.failed} to continue with the assigned step.
If no step is assigned and ${state.failed} is used an AuthState named <Realm>_Authentication_Failed is generated.
Custom Follow-up Steps
Assign follow-up steps.
The order of steps is relevant.
The first step in this list has index 1.
You may reference a step in the configuration
via the expression ${state.exit.<index>}.
Entry AuthState
Define the name of the first AuthState.
If not set the sanitized name of the pattern will be used.
The XML must contain an AuthState which has this name set,
or one that uses the expression ${state.entry} for the name.
Authentication Level
Optionally define an authentication level which will be set if the user has passed this step successfully.
Resources
Upload additional configuration files or scripts required by your AuthState configuration.
Uploaded files will be deployed into the conf directory of the nevisAuth instance.
Key Objects
This pattern adds a XML element KeyStore to esauth4.xml.
Each pattern referenced here creates an additional KeyObject
which will be added to this KeyStore as a child element.
Generic Deployment
Plugin: nevisadmin-plugin-base
Use the advanced pattern for the following use cases:
- Deploy files and scripts for your own custom component or application.
- Modify remote system configuration files.
- Patch files generated by other nevisAdmin 4 patterns (not recommended).
The pattern cannot be used when deploying to Kubernetes.
Note that the third option is not recommended. Instead, please explore the various Generic patterns which can configure many low-level options. If you cannot find a solution, please open a Nevis Support ticket. Support may be able to provide an alternative, or can create a product improvement request.
Path
Absolute path of a directory on the target host(s) where the files will be deployed to. The command will run from the same path.
nevisAppliance targets only: if the files must be persisted across reboots, use a file name
or path listed in the /etc/rwdisk.conf file on the nevisAppliance target host.
The path must not point into a directory (potentially) managed by a nevisAdmin 4 Instance Pattern.
Thus, it is not possible to directly overwrite files generated by other patterns. See Command
and Command: Execution File Triggers for an alternative solution to overcome this limitation.
Allowed Paths:
/tmp/generic-deployment/var/opt/<directory>
Example:
/tmp/generic-deployment/patch01/
Path: Delete Unknown Files
If enabled, all files in the directory (Path property) that are not specified under Files are deleted.
If you enable this property your files must be in one of the following directories or subdirectories:
/var/opt/tmp/home
Files
Upload the files which will be copied into the Path.
To upload files into subdirectories within Path, add a single .zip file with files and directories. Unpacked files will have Owner and Group applied. Note: If multiple files are uploaded, any .zip file is deployed as is, without being extracted.
It is not supported to overwrite files generated by other patterns. See also Path above.
Template Parameters
Define Template Parameters.
Examples:
smtp: smtp.siven.ch
These parameters can be used in:
- uploaded files matching an expression specified in the
Template Filesproperty - the value of the
Pathproperty - the value of the
Commandproperty
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Template Files
Expressions matching files in which to replace parameters.
If a single .zip file is unpacked, it is scanned for matching files as well.
Possible values are exact file names or file endings.
Example:
- my_script.sh
- *.txt
- *.properties
Owner
Owner of the directory at specified path. All files and subdirectories will have the same owner.
Group
Owner of the directory at path. All files and subdirectories will have the same owner.
Permissions: Owner
Read-write permissions for specified owner of the directory. All files and subdirectories (including unpacked from single .zip) will have the same permissions.
The executable bit will be set automatically for readable directories and for readable Executable Files.
Permissions: Group
Read-write permissions for specified group of the directory. All files and subdirectories (including unpacked from single .zip) will have the same permissions.
The executable bit will be set automatically for readable directories and for readable Executable Files.
Permissions: Other
Read-write permissions for all users of the directory. All files and subdirectories (including unpacked from single .zip) will have the same permissions.
The executable bit will be set automatically for readable directories and for readable Executable Files.
Executable Files
Expression to select files which shall have the executable flag.
Add exact file names or *.<ending>.
Example:
- myScript.sh
- *.py
Command
Bash shell expression which will be executed from the working directory Path as the deployment user (__connection_user variable in the inventory).
Example:
- ./my_script.sh
The command will run depending on the Command: Execution setting: always or conditional (e.g. onFileChange).
Note that with the onFileChange setting, the command is not automatically executed if you change it here.
Tip: Instead of specifying your shell instruction(s) here, add them as a separate script file into Files. For example, if the file name is
my_script.sh, enter ./my_script.sh as the Command. This way, the script will be re-executed each time you upload an updated script file
and deploy the project (if onFileChange command execution is configured below).
Command: Execution Phase
Defines when the command is executed. The files are always copied during the CONFIGURE phase.
Phases:
- CONFIGURE: Command runs after files have been uploaded, but before NEVIS instances are (re)started. Use e.g. when patching a NEVIS instance configuration file.
- ACTIVATE: Command runs when instances are (re)started. Use when deploying files or commands that are independent of NEVIS instances.
Command: Execution
Defines when or how often the command is executed.
Possible values are:
always: Execution during each deployment.onFileChange: Executed if an uploaded file under the specifiedPathhas changed.onFileTriggers: Executed if a file that is listed underCommand: Execution File Triggershas changed.onFileChange + onFileTriggers: Combining both options above.
Command: Execution File Triggers
Files deployed by other nevisAdmin 4 patterns that, when changed, trigger the script to be executed, even if the script and files itself do not change.
Example:
- /var/opt/nevisproxy/my_proxy/conf/navajo.xml
Hint:
This is useful for patching e.g. navajo.xml after generation. Note that during the next deployment, it will be reverted (if the nevisProxy Instance pattern is deployed as well)
and then patching will happen again.
Generic QoS Configuration (mod_qos)
Plugin: nevisadmin-plugin-nevisproxy
Assign the pattern to a Virtual Host using Additional Settings.
Use to configure mod_qos in case the standard configuration is not sufficient.
mod_qos is quite powerful, and can cover may use cases.
See mod_qos documentation for further information.
The mod_qos directives are not validated.
The directives are applied using an ApacheConfigFilter (named Qos),
which is added to the web.xml of the Virtual Host.
Server Directives
Server level directives can be entered here.
These directives apply to the entire nevisProxy Instance
which means that other Virtual Host patterns may be affected.
Examples:
QS_ClientEventBlockCount 200 300
QS_SetEnvIf NAVAJO_HTTPSESS_CREATED !QSNOT QS_Block=yes
QS_SrvMaxConnClose 85%
QS_SrvMaxConnPerIP 75
QS_SrvMinDataRate 75 300 250
Host Directives
Host level directives can be entered here.
Generic SMTP
Plugin: nevisadmin-plugin-nevisauth
Set up the connection to a generic SMTP server for sending emails.
Assign the pattern to Email TAN (eTAN) as SMTP Server.
Supported protocols:
smtps— TLS from the start (typically port 465). Recommended.starttls— plain connection upgraded to TLS via STARTTLS (typically port 587). The SMTP server's CA certificate must be trusted by the nevisAuth Instance (Default Backend Trust Store).smtp— plain connection without TLS. Not recommended for production.
SMTP Protocol
Select the protocol of the SMTP server.
The default value smtps uses a TLS encrypted connection.
Note that the STARTTLS protocol is not supported by nevisAuth.
SMTP Server
Enter host:port of the SMTP server.
Check that you are using the correct port for the selected SMTP Protocol.
Also note that in some environments connections to port 25 are blocked, but most SMTP servers provide an alternative port.
SMTP User
If a username is required at the SMTP server enter it here.
SMTP Password
If a password is required at the SMTP server enter it here.
Generic Social Login Step
Plugin: nevisadmin-plugin-oauth
Use to set up a generic social login, either using OAuth2 or OpenID Connect.
Provider Type
The provider type of the social account: either OpenID Connect or OAuth2.
Client ID
The identifier provided by the social account when you register with it as the IdP service.
Client Secret
The secret of the client ID that has been set in the OAuth/OpenID Connect configuration of the social account.
Return Path
The callback URI to go to after a successful login with the social account.
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/app/ - Frontend Address:
https://nevis.net
Then the URL will be https://nevis.net/oidc/app/.
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)
The request scope(s) for getting the user information from the social account. The default value is email.
The scope openid will be added automatically if providerType is set to OpenID Connect.
Scope offline_access for generate refresh token.
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.
Client Secret Method
The method used for authenticating the client. It can be either Basic Authentication or POST.
The default value is Basic Authentication.
Response Mode
The mode used for the responses of the server. It can be either Query or Form POST.
The default value is Query.
PKCE
Setting for PKCE in Authorization/Authentication request.
- enabled, the Code Challenge and Code Verifier will be included in the Authorization/Authentication request.
- disabled (default), the Code Challenge and Code Verifier will not be included in the Authorization/Authentication request.
PKCE Secret
Allow to set the secret for PKCE. The secret format should follow RFC 7636.
Code Challenge Method
Setting for PKCE Code Challenge Method.
- plain (default), the Code Challenge will be sent with raw format.
- S256, the Code Challenge will be hashed and base 64 encoded.
Provider Endpoint
The provider endpoint that contains the configuration of the OpenID Connect server.
It's required when providerType has the value OpenID Connect.
Authorization Endpoint
The authorization endpoint of the OAuth2 provider.
Required when Provider Type is set to OAuth2.
Token Endpoint
The token endpoint of the OAuth2 server.
It's required when providerType has the value OAuth2.
User Information Endpoint
The user information endpoint of the OAuth2 server.
It's required when providerType has the value OAuth2.
JWKS Endpoint
The JWKS endpoint of the OAuth2 server.
It's optional when Provider Type has the value OAuth2.
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.
Account Linking - User Property
Enter the name of the nevisIDM user property that is used for linking the account.
The property will contain the value of the sub claim of the social login provider.
This pattern will ensure that the property is created in nevisIDM by contributing to the generation of the nevisIDM configuration.
The pattern adds a property definition file to /var/opt/nevisidm/<instance>/conf/import/user_<name>.json.
This file is interpreted by nevisIDM during startup.
Before the May 2025 release, the sanitized pattern name was used for this property. This is not recommended anymore, as the account link will break when the pattern is renamed.
To avoid this problem, it is now recommended to configure this setting. If you are upgrading from a previous version you must use the property name which was used so far.
First Name Claim
The claim that contains the first name of the logged-in user in the social account.
The default value is given_name.
Second Name Claim
The claim that contains the second name of the logged-in user in the social account.
The default value is family_name.
Email Claim
The claim that contains the e-mail of the logged-in user in the social account.
The default value is email.
Subject Claim
The claim that contains the subject of the logged-in user in the social account.
The default value is sub.
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
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.
Button CSS class
The css class that apply for the social login button. Ensure that the Login Template used in your realm pattern includes a CSS file which defines the CSS class.
Button Logo Path
The path to logo file of the social login provider. This path is the path of logo file which you which uploaded at Login template in Realm pattern. E.g:
In the zip file the icon with path /webdata/resources/icons/icon.csv, the input is /icons/icon.csv
Generic Third-Party Authentication Realm
Plugin: nevisadmin-plugin-nevisauth
Assign the pattern to applications as Authentication Realm
to enforce authentication using a third-party authentication service.
Integration of a third-party authentication service usually consists of several steps:
-
Configure an
Authentication Filterwhich is mapped to applications to enforce authentication. The filter is expected to either trigger a redirect to a different path or perform a side-call. -
Provide a template for the
Roles Filter. The template is used to generate a filter in case anAuthorization Policyis assigned to an application.
Limitations of the pattern:
-
No support for session upgrades. In combination with nevisAuth you can demand a minimum
Authentication Levelfor an application. If the session is not yet at the desired level then a session upgrade is performed. -
No automatic support for sharing cookies between applications and the authentication service. However, you can configure this manually by configuring an
Authentication Applicationand assigning aCookie Customizationpattern toProtected Application SettingsandAuthentication Application Settings.
Authentication Filter
Define the filter that shall be application to applications to enforce authentication.
The following variables may be used:
${realm.id}- unique ID of this realm pattern${realm.name}- name of this realm pattern${auth.servlet}- name of the servlet of theAuthentication Application. May be used to perform a side-call.
Roles Filter
Define the filter that shall be application to applications to enforce the presence of certain roles.
The following expressions may be used:
${realm.id}- unique ID of this realm pattern${realm.name}- name of this realm pattern${auth.servlet}- name of the servlet of theAuthentication Application. May be used to perform a side-call.${filter.name}- a proposed filter name calculated from the required roles*{roles}- duplicates the entire line once for each role
Protected Application Settings
Assign add-on patterns to customize the behavior of applications protected by this realm.
A common case for redirect-based authentication is to assign a Cookie Customization here and to Authentication Application Settings
to share cookies between applications and the authentication application.
Authentication Application
Optionally assign an application which provides the authentication service and shall be exposed on the same virtual host as the applications.
Not required for federation-based authentication where the authentication service is hosted on another domain.
Additional Settings
Assign add-on patterns to customize the behavior of the Authentication Application.
Assigning these add-ons here may be more appropriate to have the complete authentication logic concentrated here.
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
By default, the session cookie will be called Session_<pattern-name>
Set this optional property to use a different name (e.g. ProxySession).
If the same name is configured for multiple realms on the same host then 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:
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
Defines the idle timeout of a nevisProxy session.
A nevisProxy session will be created only if required (e.g. to store application cookies).
Please set the timeout as low as possible to not increase the risk of session exhaustion attacks.
Max Session Lifetime
Define the maximum lifetime of a nevisProxy 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 |
Generic Virtual Host Settings
Plugin: nevisadmin-plugin-nevisproxy
Customize the web.xml configuration
using XML constructs as described in the nevisProxy Technical Documentation.
Use as add-on for the Virtual Host pattern.
The following expressions are supported:
${name}: sanitized name of the pattern${service.name}: the name of the virtual host${service.id}: the unique ID of the virtual host${service.path}: the base path of the virtual host (empty String)${service.mapping}: theurl-patternfor the virtual host/*
Filters and Mappings
Configure filters and their mappings using the XML syntax described in the nevisProxy Technical Documentation.
Filters that have the same name as other filters (even those defined by other patterns)
will be combined: the init-param sets will be merged where possible.
Direct contradictions are interpreted as validation failures.
Example 1: Create (or patch) a filter with a fixed name
<filter>
<filter-name>SomeName</filter-name>
<filter-class>ch::nevis::isiweb4::filter::SomeClass</filter-class>
<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
</init-param>
</filter>
Example 2: Create (or patch) a filter using an application-specific name
<filter>
<filter-name>SomeName_${service.name}</filter-name>
<filter-class>ch::nevis::isiweb4::filter::SomeClass</filter-class>
...
</filter>
Example 3: Map a filter to a sub-path of the assigned application(s). This example works for applications which have 1 frontend path only.
<filter-mapping>
<filter-name>SomeFilter</filter-name>
<url-pattern>${service.path}/custom/*</url-pattern>
</filter-mapping>
Example 4: Use multi-value expressions
Multi-value expressions replicate an entire line for each associated value.
Use the expressions *{service.path} and *{service.mapping} to generate filters
which must contain the frontend paths of all assigned applications.
The following snippet is not complete but should illustrate the concept:
<filter>
<filter-name>FormSigning</filter-name>
<filter-class>ch::nevis::isiweb4::filter::validation::EncryptionFilter</filter-class>
<init-param>
<param-name>EntryURL</param-name>
<param-value>
*{service.path}/
</param-value>
</init-param>
...
</filter>
Filter Mappings
Choose between:
manual(default): only thefilter-mappingelements which have been configured viaFilters and Mappingswill be added.automatic: filters configured viaFilters and Mappingswill be mapped to/*.both: likeautomaticbut additionalfilter-mappingelements are allowed as well.
Filter Phase
When adding filter-mapping elements, a phase must be defined.
The phase defines where the filter-mapping is placed in the web.xml and ensures that filters
are applied in the right order, relative to other phases.
The order within a certain phase is undefined as it must not matter.
The order for requests is START to END and END to START for responses.
This setting applies to all filter-mapping elements.
The filter-mapping elements may be provided via Filters and Servlets,
or created automatically (see Filter Mappings for details).
Choose from the following filter phases:
START: applied as early as possible for requests and as late as possible for responses.BEFORE_SANITATION: applied before filters which validate the request (e.g. Mod Security).SANITATION: used for security. This is the first phase which allows accessing the session for applications protected by a realm.AFTER_SANITATION: your request has passed security checks.BEFORE_AUTHENTICATION: applied just before authentication.AUTHENTICATION: used by the filter which connects to nevisAuth for applications which are protected by anAuthentication Realm.AFTER_AUTHENTICATION: the request has level 1 authentication. Used byAuthorization PolicyforAuthentication Levelstepup.BEFORE_AUTHORIZATION: choose this phase to do preprocessing before authorization.AUTHORIZATION: used byAuthorization PolicyforRequired Rolescheck.AFTER_AUTHORIZATION: used by patterns assigned asApplication Access Tokento applications.END: applied as late as possible for requests and as early as possible for responses.
This setting is ignored when you patch a filter generated by another pattern
(e.g. by adding, overwriting, or removing an init-param element) but don't create any filter-mapping element.
Servlets and Mappings
Configure servlet and/or servlet-mapping elements
using the XML constructs described in the nevisProxy Technical Documentation.
You can also customize elements which have been generated by other patterns. Elements can be referenced as follows:
servlet:servlet-nameservlet-mapping:url-pattern
In Kubernetes side-by-side deployment a postfix is added to service names.
Use the expression ${service.postfix} connecting to a service deployed against the same inventory.
Example 1: Add or overwrite an init-param for an existing servlet:
<servlet>
<servlet-name>Hosting_Default</servlet-name>
<init-param>
<param-name>NoMatchFile</param-name>
<param-value>/index.html</param-value>
</init-param>
</servlet>
Example 2: Remove a servlet-mapping:
<servlet-mapping>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
Here we left out the servlet-name to tell the pattern to remove the servlet-mapping for the given url-pattern.
Note that the mapping of the hosted resources is an exception and cannot be removed this way
(see the property Hosted resources of the Virtual Host pattern for more information).
Removing a servlet element is not supported.
Template Parameters
Define Template Parameters.
Examples:
backend-host: backend.siven.ch
These parameters can be used in:
Servlets and MappingsFilters and Mappings
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Remove Filter Mappings
Remove <filter-mapping> elements generated by other patterns.
This is an advanced configuration.
Use only when you want to remove a <filter-mapping> but keep the <filter> element,
e.g. to map it on a sub-location.
The syntax is a map of <filter-name>:<url-pattern>, according to values from the web.xml.
For instance, the following would remove the ErrorHandler_Default from /*:
ErrorHandler_Default:/*
Mime-Mappings
Set or replace mime-mapping elements.
Examples:
<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
The mime-mapping elements affect the entire Virtual Host
and are used use to determine the Content-Type for responses.
nevisProxy always sets a Content-Type header
for static resources served by the Virtual Host.
Further, nevisProxy can add a Content-Type header for resources served by applications.
To enable this advanced feature assign Generic Application Settings to the application
and set the parameter ProxyPolicy to mime-completion.
Generic nevisAdapt Instance Settings
Plugin: nevisadmin-plugin-nevisadapt
Use this add-on pattern to set low-level properties
in configuration files of a nevisAdapt Instance.
nevisAdapt Properties
Add properties for nevisadapt.properties.
See nevisAdapt Reference Guide for details.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
For instance, you may configure nevisAdapt to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisadapt/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Generic nevisAuth Instance Settings
Plugin: nevisadmin-plugin-nevisauth
Use this add-on pattern to set low-level properties
in configuration files of a nevisAuth Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisAuth to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisauth/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Environment Variables
Add additional environment variables to the nevisAuth env.conf.
The standard environment variables RTENV_SECURITY_CHECK and JAVA_OPTS
will always be present in env.conf and can't be overwritten using this setting.
Generic nevisAuth REST Service
Plugin: nevisadmin-plugin-nevisauth
Configures a nevisAuth REST service using the XML syntax described in the nevisAuth Technical Documentation.
The service is not exposed on a nevisProxy Virtual Host,
it is accessible on the assigned nevisAuth only.
The XML attribute path defines which requests are handled.
nevisAuth
Assign a nevisAuth Instance.
Configuration
As an alternative to direct configuration you can upload a file which contains the XML.
The file should contain RESTService elements only.
Uploading a complete esauth4.xml is not supported.
Template Parameters
Define Template Parameters.
Examples:
smtp: smtp.siven.ch
These parameters can be used in your Configuration.
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Generic nevisAuth Web Service
Plugin: nevisadmin-plugin-nevisauth
Configures a nevisAuth Web service using the XML syntax described in the nevisAuth Technical Documentation.
The service is not exposed on a nevisProxy Virtual Host,
it is accessible on the assigned nevisAuth only.
The XML attribute uri defines which requests are handled.
nevisAuth
Assign a nevisAuth Instance.
Configuration
The file should contain WebService elements only.
Uploading a complete esauth4.xml is not supported.
Template Parameters
Define Template Parameters.
Examples:
smtp: smtp.siven.ch
These parameters can be used in your Configuration.
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Generic nevisDetect Instance Settings
Plugin: nevisadmin-plugin-nevisdetect
Use this add-on pattern to set low-level properties
in configuration files of a nevisDetect Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisDetect to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisdetect/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Generic nevisFIDO FIDO2 Instance Settings
Plugin: nevisadmin-plugin-fido2
Use this add-on pattern to set low-level properties
in configuration files of a nevisFIDO FIDO2 Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisFIDO to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisfido/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Configuration: nevisfido.yml
This setting provides a low-level way to add or overwrite configuration in nevisfido.yml.
Enter the configuration as it would appear in the nevisfido.yml using correct indentation.
Example:
management:
server:
port: 9089
healthchecks:
enabled: true
Generic nevisFIDO UAF Instance Settings
Plugin: nevisadmin-plugin-nevisfido
Use this add-on pattern to customize configuration files of a nevisFIDO UAF Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisFIDO to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisfido/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Configuration: nevisfido.yml
This setting provides a low-level way to add or overwrite configuration in nevisfido.yml.
Enter the configuration as it would appear in the nevisfido.yml using correct indentation.
Example:
management:
server:
port: 9089
healthchecks:
enabled: true
Generic nevisIDM Instance Settings
Plugin: nevisadmin-plugin-nevisidm
Use the add-on pattern to set low-level properties
in configuration files of an nevisIDM Instance.
nevisIDM Properties
Add properties for nevisidm-prod.properties.
See nevisIDM Reference Guide (chapter Configuration files) for details.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisIDM to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevisidm/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Generic nevisLogrend Instance Settings
Plugin: nevisadmin-plugin-nevisauth
Use the add-on pattern to set low-level properties
in configuration files of a nevisLogrend Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisLogrend to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevislogrend/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Generic nevisMeta Instance Settings
Plugin: nevisadmin-plugin-nevismeta
Use this add-on pattern to set low-level properties
in configuration files of a nevisMeta Instance.
Java Opts
Add additional entries to the JAVA_OPTS environment variable.
Use the expression ${instance} for the instance name.
For instance, you may configure nevisMeta to create a heap dump on out of memory as follows:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/opt/nevismeta/${instance}/log/
Be aware that this example will not work for Kubernetes as the pod will be automatically restarted on out of memory and the created heap dump files will be lost.
Generic nevisProxy Instance Settings
Plugin: nevisadmin-plugin-nevisproxy
You can assign the pattern to a nevisProxy Instance using Additional Settings.
Use to customize the main configuration files of the nevisProxy instance, including:
navajo.xmlbc.propertiesenv.conf
To configure logging, use nevisProxy Log Settings instead.
Configuration: navajo.xml
Customize the Navajo servlet container configuration (navajo.xml)
using XML constructs described in the nevisProxy Technical Documentation.
The root element <Service> must be provided.
Examples:
Increase the number of parallel requests (worker threads):
<Service>
<Server MaxClients="1000"/>
</Service>
Increase the maximum allowed request body size:
<Service>
<Server LimitRequestBody="10485760"/>
</Service>
When patching a certain Host, you have to provide the name.
Let's say you use the variable domain for Frontend Addresses in your Virtual Host.
You then have to use the expression ${var.domain} to patch the corresponding Host element.
Allow additional status codes by patching the Context element:
<Service>
<Engine>
<Host name="${var.domain}">
<Context additionalStatusCodes="207,210,242,422,423,424,449,456,540,541,543,544,545,456,549,552,560" />
</Host>
</Engine>
</Service>
Overrule the allowed HTTP methods:
<Service>
<Engine>
<Host name="${var.domain}">
<Context allowedMethods="ALL-HTTP" />
</Host>
</Engine>
</Service>
Overrule the server aliases for some.domain.com:
<Service>
<Connector name="some.domain.com" port="*" serverAlias="*.domain.com">
</Connector>
</Service>
It is possible to use the following placeholders:
${instance.id}: unique ID of thenevisProxy Instancepattern${instance.name}: name of the nevisProxy instance. For instance, use/var/opt/nevisproxy/${instance.name}to refer to the instance directory.
Limitations:
- customizing
Navajoelements is not supported - customizing
Host(or its child elements) requiresname
Configuration: bc.properties
Customize the low-level configuration (bc.properties)
using properties described in the nevisProxy Technical Documentation.
For instance, when request validation is enabled this requires a buffer and this buffer has to be big enough to store the entire request.
The following example increases the maximum size of the request buffer to 10 MB:
ch.nevis.navajo.request.BufferSize=10485760
You also may have to increase the maximum allowed request size.
See Configuration: navajo.xml for an example.
Note that increased buffer sizes may lead to increased demand of RAM and disk space.
When the required buffer exceeds ch.nevis.navajo.request.MemBufferSize
then nevisProxy will buffer to disk instead.
The demand caused by request buffers can be estimated as follows:
- RAM:
MaxClients*ch.nevis.navajo.request.MemBufferSize - disk:
MaxClients*ch.nevis.navajo.request.BufferSize
See Configuration: navajo.xml for a description of MaxClients.
Environment Variables
Add additional environment variables to the nevisProxy env.conf.
Each variable is written as KEY=VALUE followed by an export KEY line so it
becomes part of the nevisProxy process environment.
Keys defined by other patterns (for example PKCS11_PIN, SECUROSYS_PKCS11_CONF,
SECUROSYS_SECRETS_CONF and OPENSSL_CONF from the Securosys Key Store
pattern) must not be set here.
Template Parameters
Define Template Parameters.
Examples:
backend-host: backend.siven.ch
These parameters can be used in:
Configuration: navajo.xmlConfiguration: bc.properties
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
Generic nevisProxy TLS Settings
Plugin: nevisadmin-plugin-nevisproxy
Use the add-on to customize TLS/SSL settings for nevisProxy.
Assign to a Virtual Host to customize settings for incoming connections.
You can customize connections to backends by assigning the pattern to your applications
(Web Application, REST Service, SOAP Service) using Additional Settings.
Protocols
The value(s) configured here will be used as SSLProtocol.
Read the Apache Documentation for supported values.
The SSLProtocol can appear in 2 different places, depending on where this pattern is assigned:
- as attribute for the
SSLelement innavajo.xml. - as init-param for the
HttpsConnectorServlet.
If nothing is configured, a default will apply. The default is determined as follows:
-
For the
SSLelement innavajo.xmltheSSLProtocolattribute will be generated as-all +TLSv1.2 +TLSv1.3by theVirtual Hostpattern. -
For the
HttpsConnectorServletnoSSLProtocolinit-param will be generated, and thus the default of this servlet applies. Read the documentation of the HttpsConnectorServlet for further information.
Cipher Suite
Configure the allowed cipher suites.
Read the Apache Documentation for the supported format.
The value configured here will be applied as:
SSLCipherSuitefor theSSLelement innavajo.xmlwhen the pattern is assigned to aVirtual Host.SSLCipherSuitesfor theHttpsConnectorServletelement in theweb.xmlwhen this pattern is assigned to an application.
If nothing is configured, a default will apply. The default is determined as follows:
- For the
SSLCipherSuiteattribute of theSSLelement innavajo.xmla default will be generated by theVirtual Hostpattern. - For
HttpsConnectorServletnothing will be generated, and thus the default of this servlet applies. Read the documentation of the HttpsConnectorServlet for details.
SSL Options
The value configured here will be applied as SSLOptions.
It should only have value when assigned to a Virtual Host pattern.
Check the Apache Documentation for details.
If empty and when this pattern is assigned to a Virtual Host the following value is used:
+OptRenegotiate +StdEnvVars +ExportCertData
Geolocation Service
Plugin: nevisadmin-plugin-nevisproxy
This pattern sets up a service that responds with the geolocation of the caller, based on the callers source IP.
The response is a JSON with the following format:
{
"query":"<IP>"
"status":"success|fail"
"continentCode":"<ISO continent code>"
"countryCode":"<ISO country code>"
"licence":"https://www.maxmind.com/en/geolite2/eula"
}
The pattern requires that nevisProxy is able to correctly determine the source IP for the incoming request.
If a component in front of nevisProxy terminates TLS connections (e.g. a load balancer, ingress, Cloudflare),
then you have to configure a Source IP Header in the Virtual Host pattern.
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Frontend Path
The path on which the service shall be accessible.
Geolocation Database
Upload a Maxmind database file.
For further information, see the documentation in the nevisProxy reference guide.
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.
Google Login Step
Plugin: nevisadmin-plugin-oauth
Set up social login, using Google as OpenID Connect provider.
Client ID
ClientID is Client ID provided by Google when you create a OAUTH 2.0 credential in Google.
Client Secret
Client Secret is Client Secret provided by Google when you create a OAUTH 2.0 credential in Google.
Return Path
The callback URI to go to after a successful login with Google.
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/google/ - Frontend Address:
https://nevis.net
Then the URL will be https://nevis.net/oidc/google/.
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.
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
Scope(s)
Select the request scope(s) for getting user information from Google. Default scopes is email.
Scope openid will be added automatically because Google is implement based on OpenID protocol.
Scope offline_access for generate refresh token. This scope will transfer to access_type=offline request parameter for matching with Google spec
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.
Groovy Script Step
Plugin: nevisadmin-plugin-nevisauth
This step generates a nevisAuth ch.nevis.esauth.auth.states.scripting.ScriptState.
The GUI descriptor cannot be customized, unless you overwrite the response template in the Groovy script.
If script execution fails HTTP error code 403 is returned,
and the session will be terminated using AUTH_ERROR.
Groovy Script
Upload the Groovy script as a file.
Further information can be found in the nevisAuth Technical Documentation:
Use the expression ${service.postfix} to refer to Kubernetes services
deployed by this nevisAdmin 4 project.
The expression can always be used as it produces an empty String when the deployment is not a Kubernetes side-by-side deployment.
For instance, the following snippet declares a URL which points to the REST API
of a nevisIDM Instance that has been deployed as a Kubernetes service called idm:
def url = "https://idm${service.postfix}:8989/nevisidm/api"
You may use var expressions to insert values from inventory variables at generation time.
For instance, use ${var.<name>} to insert a variable called <name>.
If the variable is a scalar, the value will be returned as-is.
If the variable is a sequence, a Groovy list will be returned (start: [, end: ], separator: ,, String quote: ").
If your Groovy script fails to validate, see Script Validation.
Script Parameters
Set parameters for your Groovy script.
Enter the name of the parameter as Key.
The Value can be either:
- constant String value
- nevisAuth expression (
${...:...}) - an EL expression (
#{...}) - a reference to an inventory variable (
${var.<name>}). Such expressions are resolved during generation.
Parameters can then be used inside the Groovy script via the parameters map.
Example usage:
parameters.get('backend-url')
Script Validation
Choose between:
enabled- parse the Groovy script and run against mock objects.parse-only- only parse the Groovy script.disabled- the script is not validated.
The validation is not feature complete and thus there may false negatives.
For instance, import statements can make the validation fail as the corresponding classes
are usually not on the nevisAdmin 4 classpath. This case is quite common and thus
failed imports will be reported as info issues to not block deployment.
If your Groovy script produces warning or error issues
but is working inside nevisAuth please select disabled
and provide the script to Nevis Security so that we can improve the validation.
When set to enabled the following mock objects will be used for validation:
Map<String, String> parameters
Map<String, Object> inctx
Properties inargs
Map<String, Object> session
Properties outargs
Properties notes
Request request
Response response
Tracer LOG
On Success
Assign an authentication step which shall be executed
when the Groovy script sets the result ok.
response.setResult('ok')
If no step is assigned a default state will be added.
On Failure
Assign an authentication step which shall be executed
when the Groovy script sets the result error.
response.setResult('error')
If no step is assigned a default state will be added.
Custom Follow-up Step(s)
Assign follow-up steps.
For each step a transition (called ResultCond in esauth4.xml) is added.
The name of the transition depends on the position in the list.
For instance, if 2 steps are assigned the following transitions will be added:
exit.1exit.2
The Groovy script may trigger a certain transition by calling the method response.setResult
handing over the name of the transition.
Example:
response.setResult('exit.1')
Custom Class Path
Set the classPath attribute of the AuthState element.
Lines will be joined with :. Enter 1 path per line.
When set, the classLoadStrategy attribute will be set to PARENT_LAST.
Log Category
Use a different category for logging in your Groovy script.
Response Type
Choose between:
AUTH_ERROR: terminates the session.AUTH_CONTINUE: use to produce a response and continue with this state on next request.
Error Status Code
Set the status code for responses when the Response Type is set to AUTH_ERROR.
The default of 403 is backward compatible.
Note that we generally use 403 for unhandled error cases in authentication step patterns.
This is to avoid exposing the information that a certain case is not properly handled.
Depending on your case, a 500 or 400 may be a more appropriate choice.
Gui Elements
Add Gui elements to the Response.
For each line 1 Gui element will be generated.
Most authentication states have only 1 Gui element.
The format is key-value pairs. The key is used as name. The value is optional and used as label.
For instance, the line auth:title.login will produce the following Gui element:
<Gui name="auth" label="title.login"/>
Configuration of GuiElem elements is not supported.
You have to create them dynamically in your script.
Here is an example how to render a certain Gui and add GuiElem elements:
response.setGuiName('login')
response.addInfoGuiField('info', 'info.login', null)
HTTP Error Handling
Plugin: nevisadmin-plugin-nevisproxy
Use the pattern to handle HTTP error codes.
You can use the pattern as an add-on for Virtual Host
or any backend application, for example, Web Application, REST Service, or SOAP Service.
Error Pages
Upload HTML error pages, JSON error pages and associated resources here.
Pages must be named like the error code they are used for (e.g. 500.html).
You can use the same page for multiple status code (e.g. 401,403,500-599.html).
By default, the error pages are deployed to /errorpages/<name> but
you can set a different location via the property Base Path (see Advanced Settings).
In your error pages we recommend to use relative links to include resources.
You may also include resources deployed on the virtual host via Hosted Resources.
The following placeholders are supported:
TRANSFER_IDfor the unique ID of the request (e.g.c0a80e52-5d04-11ac0500-16906714eee-00000003)TIMESTAMPto show a timestamp (e.g.Tue, 19 Feb 2019 15:48:02 GMT)
Blocked Status Codes
Hide certain HTTP status code(s) by returning 200 OK instead (by using the reset-status-code action).
By default, the status code is not changed as it can be useful for technical clients.
The response body will still be replaced.
You may also enter:
- ranges of status codes (e.g.
500-599), - lists (e.g.
403,500) - combination thereof (e.g.
403,500-599).
Redirect Status Code Mapping
Redirect to a given location instead of rewriting the response body.
Locations can be entered as:
- URLs (starting with
http://orhttps://) - paths (starting with
/)
Internal and external locations are supported.
Examples:
404,500-599 -> /some/super/redirect/
403 -> https://www.google.com
Keep Header Status Codes
By default, HTTP headers are dropped when an error code is handled.
This avoids information leakage but can lead to session loss in some cases.
For instance, the nevisProxy session will be lost when all the following holds:
- this pattern is configured to handle code
502. - the application is unreachable (
502is produced). - the nevisProxy session cookie is renegotiated (
Set-Cookieheader is set). - user refreshes the page after the error page is shown.
To overcome this limitation you may enter 502 here.
Note that we are investigating additional measures and may adapt this property in future releases.
Overwrite Status Codes
Overwrite certain HTTP status code(s) by returning with the defined status code instead.
If for an error code both Blocked Status Code and Overwrite Status Code is configured, the Blocked Status Code will take precedent.
Examples:
404,406-499 -> 401
405 -> 200
Mode
Enable or disable the error handling.
When set to disabled, all settings except Apply only to sub-paths are ignored.
Use this setting in combination with Apply only to sub-paths to disable the error handling for some sub-paths only.
Usage examples (valid for Virtual Hosts and backend applications):
- Disable the error handling:
use an
Error Handlerpattern withModeset todisabledand link it to the target pattern viaAdditional Settings; - Disable the error handling for some sub-paths:
use an
Error Handlerpattern withModeset todisabledandApply only to sub-pathsset to the paths where no error handling should occur, and link it to the target pattern viaAdditional Settings; - Define a customised error handling and disable it for some sub-paths:
use two
Error Handlerpatterns, one with the custom settings, and one withModeset todisabledandApply only to sub-pathsset to the paths where no error handling should occur. Link both of them to the target pattern viaAdditional Settings.
Apply only to sub-paths
Set to apply the error handling 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 |
Content-Type Mode
The Content-Type Mode allows enabling or disabling the error handling depending on the Content-Type header of the backend response.
Use this setting in combination with the Content-Types setting.
Choose one of:
None: The error handling settings are applied to all backend responses.Enabled: The error handling settings are enabled only for the backend responses with aContent-Typeheader included in the Content-Types setting. Backend responses with other Content-Types are propagated to the client.Disabled: The error handling settings are disabled for the backend responses with aContent-Typeheader included in the Content-Types setting. These responses are propagated to the client. The error handling settings are applied to backend responses with otherContent-Typeheaders.
Content-Types
The Content-Types configures the Content-Type headers for which the Content-Type Mode setting is applied.
Enter one value per line.
Use this setting in combination with the Content-Type Mode setting.
Base Path
By default, the error pages are deployed to /errorpages/<name> but you can set a different location here.
Keep Security Headers
Configure the name of special response headers which should be kept, regardless of the header action of the matching rule. Useful for keeping the security response headers for the error pages.
Default:
Strict-Transport-Security
X-Content-Type-Options
Referrer-Policy
HTTP Header Customization
Plugin: nevisadmin-plugin-nevisproxy
Use to add, overwrite, or remove HTTP headers in requests or responses.
You can use the pattern as add-on for Virtual Host or applications,
for example, Web Application, REST Service, or SOAP Service.
The following expressions may be used:
${client.ip}- IP address of the caller${request.id}- unique ID of this request${request.header.<name>}- value of a request header (only for requests)${env.<name>}- ApacheENVvariables${auth.<name>}- access to theAUTHscope (only for requests, requires anAuthentication Realmand theFilter Phaseis to be set toAFTER_AUTHENTICATIONorEND)
Add / Overwrite Headers
Adds/overwrites HTTP headers in requests.
The syntax is: <header name>:<value>
Examples:
X-Forwarded-For: ${client.ip}
User-ID: ${auth.user.auth.UserId}
Note: change the Filter Phase to replace headers early / late.
In order to use the ${exec: ...} syntax of nevisProxy for passwords,
use an inventory secret to skip the validation of the value.
Basic Auth User
Enter the basic auth user or an expression of the format <source>:<parameter>.
For the <source> you may use:
AUTH: outargs returned by nevisAuth.CONST: constant strings.ENV: Apache environment variables.PARAM: values from a request body as provided by aParameterFilter.HEADER: request headers.
Basic Auth Password
Enter the basic auth password or an expression of the format <source>:<parameter>.
For the <source> you may use:
AUTH: outargs returned by nevisAuth.CONST: constant strings.ENV: Apache environment variables.PARAM: values from a request body as provided by aParameterFilter.HEADER: request headers.
Remove Headers
Removes HTTP headers from requests.
The syntax is: <header name>
Examples:
User-Agent
Note: change the Filter Phase to remove headers early / late.
Filter Phase
START- manipulate request headers early to hide them from validation and authentication.AFTER_AUTHENTICATION- the original values are subject to validation and can be accessed in the authentication flow. The header manipulation is applied afterwards to affect the application only.END- manipulate request headers late, just before the request is forwarded to the application.
Add / Overwrite Headers
Adds/overwrites HTTP headers in responses.
The syntax is: <header name>:<value>
Force browser to use HTTPS only (1 day expiration):
Strict-Transport-Security: max-age=86400
Ensure pages are not cached:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Headers set by Apache (e.g. Server) cannot be overwritten.
Note: change the Filter Phase to set headers early / late.
Remove Headers
Removes HTTP headers from responses.
The syntax is: <header name>
Examples:
X-Content-Type-Options
Headers set by Apache cannot be removed:
Server
Note: change the Filter Phase to remove headers early / late.
Filter Phase
START- manipulate request headers late to also cover any headers set by nevisProxy.AFTER_AUTHENTICATION- default behavior which should work in most cases.END- manipulate response headers early hiding them from other nevisProxy filters which operate on responses.
Add / Overwrite Headers Condition
Set to do the header customization only if the given condition applies.
The condition is checked for Add / Overwrite Headers on requests and on responses.
You can use the expressions mentioned above.
Syntax:
${expression} == value
Examples:
${request.header.Content-Type} == application/x-www-form-urlencoded
Apply only to sub-paths
Set to apply the header customization 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 illustrates 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 |
Hosting Service
Plugin: nevisadmin-plugin-nevisproxy
Use the pattern to host static pages and related resources.
For instance, you can use this pattern to host HTML or a single-page application (SPA).
Further, you can provide CSS, images, and Javascript for error pages uploaded by a HTTP Error Handling pattern.
The pattern generates configuration for the nevisProxy ch::nevis::nevisproxy::servlet::file::FileReaderServlet.
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Frontend Path
The path at which the resources shall be accessible at the frontend.
You may use / to deploy root content.
Resources
Upload your resources here.
All files will be deployed in the same directory. Please use standard extensions (e.g. .css, .png, .html, .htm) only.
If you want to use subdirectories please upload a .zip file instead. The content of the .zip file will be unpacked.
Default File
Defines a default file which will be returned when there is no other matching file.
Authentication Realm
Optionally assign a realm to protect this application or service.
Rewrite Rules
Rewrite rules for serving files.
This can be useful if a file should be served under a different name, or to map extensions to file names.
Examples:
| Source | Destination |
|---|---|
/static/picture | /static/picture.jpg |
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.
ICAP Scanning
Plugin: nevisadmin-plugin-nevisproxy
The pattern configures a filter in nevisProxy to forward incoming requests to an ICAP server, for example, ClamAV. A typical use case is virus scanning for file uploads.
ICAP Server URLs
URL(s) of the ICAP server(s). Each URL must have the same path.
Example: icap://my-clamav-server1/avscan
Content-Type Restriction
Optional property to restrict scanning to a certain Content-Type (regular expression is supported here).
Example: application/.*
Apply only to sub-paths
Set to apply the ICAP scanning 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 |
In-band Mobile Authentication Realm
Plugin: nevisadmin-plugin-nevisfido
Sets up In-Band Authentication to protect REST services.
If you want to protect a web application and use mobile authentication from a web browser, use Out-of-band Mobile Authentication instead.
In a nutshell, the pattern configures Nevis for the following use case:
- The user opens the mobile application and accesses a protected resource, for which they have no authorization yet.
- The mobile application prompts the user to authenticate.
- The mobile app sends a request to
/auth/fidouafto authenticate. - The user is now authenticated, the mobile application is able to access the protected REST service.
Before executing mobile authentication, the user has to register their mobile device.
The required APIs can be set up using In-band Mobile Registration Service pattern.
Application Access Tokens
Tokens assigned here may be created after successful authentication.
To produce and forward a token to an application backend,
reference the same token from the application's Additional Settings property.
nevisFIDO
Assign a nevisFIDO instance. This instance will be responsible for providing the in-band authentication services.
Key Store
Assign a pattern which provides the key store for nevisAuth to connect to nevisFIDO with client TLS.
Trust Store
Assign a pattern which provides the trust store for nevisAuth to connect to nevisFIDO.
nevisAuth
The nevisAuth Instance where the authentication flow will be configured.
Key Store
Define the key store to use for 2-way HTTPs connections from nevisProxy to nevisAuth.
Trust Store
Defines the trust store that nevisProxy uses to validate the nevisAuth HTTPs endpoint.
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.
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.
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.
In-band Mobile Registration Service
Plugin: nevisadmin-plugin-nevisfido
Provides services for In-Band Registration.
For in-band registration no browser is required. All actions are triggered by the mobile app.
The user typically has to click a registration button in the app to get started. On successful registration, credentials are created on the mobile device and in nevisIDM.
A Generic credential is generated as well which makes the mobile device a dispatch target, to which push notifications can be sent. For more information, see Dispatch Target Management.
For the access app this use case is provided for testing purposes only. However, in-band registration may be used in production when using the mobile SDK.
In-band registration requires non-mobile authentication.
This pattern can generate a simple username and password flow into the assigned realm. There are several limitations with this flow:
- the flow cannot be adapted.
- the password must be active and not expired, as there is no support for enforced password change.
For production use cases we recommend to configure your own flow
and expose that on a separate path using Standalone Authentication Flow.
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Authentication Realm
Assign an In-band Mobile Authentication Realm or Authentication Realm here.
Assignment is required.
The assigned realm will be used to protect the path /nevisfido/uaf/1.1/request/registration/.
If Authentication Service is enabled, a simple authentication flow will be added to this realm.
Application Access Token
Propagate a token to the backend application. The token informs the application about the authenticated user.
For instance, assign NEVIS SecToken if the application uses Ninja or
SAML Token for applications which are able to consume SAML Responses.
nevisFIDO
Assign a nevisFIDO instance.
This instance will be responsible for providing the device registration services.
Authentication Service
If enabled, an endpoint will be provided at the Authentication Service Path.
The mobile app may use this endpoint to authenticate and get a cookie.
With this cookie, the registration operation can be initiated.
This is a convenience feature.
The configuration that is generated is similar to the configuration described here.
To match this example, the Authentication Service Path should be /auth/pwd but we suggest using a more specific path.
There are several alternatives to how you can provide authentication:
- use
Standalone Authentication Flowto provide an authentication endpoint for this realm using authentication steps. - authenticate the registration operation using the
Initial Authentication Flowof the assignedAuthentication Realm.
Authentication Service Path
Configure the path of the authentication service.
Client Name
Enter the name of the nevisIDM Client.
JSON Response Step
Plugin: nevisadmin-plugin-nevisauth
A simple step that returns a JSON response.
JSON Response
Enter the JSON response.
Response Type
Use AUTH_CONTINUE to keep the current session and stay in state.
If and when the next request comes in, the On Continue exit will be taken.
Use AUTH_DONE to finish the current flow and establish an authenticated session.
In a classic reverse proxy scenario, the request will continue in the filter chain in nevisProxy, towards the calculated servlet. If the servlet points to an application the request will be forwarded.
Note that in some authentication scenarios (e.g. federation), there is no backend and thus a 404 error may occur,
unless the AUTH_DONE is handled.
For instance, there are certain AuthState classes that handle AUTH_DONE to fulfill their use case.
A prime example is the AuthorizationServer which is set up by the OAuth 2.0 Authorization Server / OpenID Provider pattern.
This one handles AUTH_DONE by completing the OAuth flow.
Use AUTH_ERROR to terminate the flow, removing the session.
Note that this type may also be used for successful execution, to remove the session.
On Continue
This exit will be taken when Response Type is set to AUTH_CONTINUE and the next request is received.
Status Code
Enter an appropriate status code for the HTTP response.
If not set the code will be set based on the selected Response Type:
AUTH_ERROR:401AUTH_DONE:200
Parameters
Define Parameters to be used in the JSON Response.
Examples:
backend-host: backend.siven.ch
The expression formats are:
${param.<name>}:
namefound: parameter value is used.namemissing: expression is not replaced.
${param.<name>:<default value>}:
namefound: parameter value is used.namemissing: default value will be used.
In <default value> the character } must be escaped as \}.
JWT Access Restriction
Plugin: nevisadmin-plugin-nevisproxy
Sets up a filter in nevisProxy to verify the JWT of incoming requests.
A request will be allowed to pass through if it contains a valid JWT, in
every other case (e.g. failed to verify, expired or token not present), the
request will be blocked. Blocked requests are responded to with HTTP error code 403
The pattern can be assigned to applications
or an entire Virtual Host using Additional Settings.
.
HTTP Header
By default, the JWT will be extracted from the Bearer type Authorization request header:
Authorization: Bearer <token>
Optionally, this behavior can be overwritten by this property by specifying a request header from where the token should be extracted, for example if the token is sent like:
CustomAuthHeader: <token>
Then configure CustomAuthHeader for this property.
Algorithm
The algorithm used to sign and verify the JWT.
Supported algorithms are:
- RS256
- RS384
- RS512 (default)
Public Key
The public key corresponding to the private key which was used to sign the JWT.
JWT Token
Plugin: nevisadmin-plugin-nevisauth
Assign to a realm using Application Access Tokens to allow the realm to produce a JWT token.
To issue a JWT token and propagate it to applications you also have to assign the pattern to
the corresponding Web Application, REST Service, or SOAP Service using Application Access Token.
The JWT token is sent in an HTTP header (default: Authorization) in the format Bearer <token>.
Token Type
The following types of JWT token are supported:
JWS: JSON Web Signature - usingHS256orHS512algorithmJWE: JSON Web Encryption - usingRSA-OAEP-256andA256GCMalgorithm
Note: in case asymmetric encryption is used, the x5t#S256 Certificate thumbprint header parameter will automatically be added
according to RFC 7515.
Token Algorithm
The following algorithms of JWT token are supported:
HS256orHS512: compatible withJWStoken typeRSA-OAEP-256: compatible withJWEtoken type
Secret
Enter a shared secret to be used for symmetric algorithms.
This is required for JWS because of the HS256 algorithm.
Signer Key Store
A Key Store is required when an asymmetric algorithm is used.
This is required for JWE because of the RSA-OAEP-256 algorithm.
Issuer
The issuer (iss) is an optional claim
which may be checked by applications receiving this token.
Subject
Enter a nevisAuth expression for the claim sub.
The default refers to the ID of the authenticated user.
Audience
The audience (aud) is an optional claim
which may be checked by applications receiving this token.
User Attributes
Add custom claims to the JWT token.
Values can be static, nevisAuth expressions (${...}) or EL expressions (#{...}).
Examples:
| Claim | Expression |
|---|---|
${sess:user.email} |
Key Identifier
The kid (key ID) Header Parameter is a hint indicating which key
was used to secure the JWS. This parameter allows originators to
explicitly signal a change of key to recipients.
When used with a JWK, the kid value is used to match a JWK kid
parameter value.
For reference, please consult RFC 7515.
Header
When this pattern is assigned to an application, the JWT token will be added to all requests which are forwarded to that application.
Here you can define the name of the HTTP header which should contain the token.
Custom Properties
Set low-level properties for the JWTToken AuthState.
Java Observability Settings
Plugin: nevisadmin-plugin-base
Sets up observability for Java-based Nevis components.
You can choose between OpenTelemetry and Application Insights.
This pattern adds a Java agent to integrate with either system.
Agent Type
Choose agent type:
OpenTelemetryto integrate with self-hosted observability stack or with an OpenTelemetry compatible cloud provider.Application Insightsto integrate with Azure Application Insights.
Agent Library Path
Path to the selected agent's library that is available locally to the deployed application.
Agent Configuration
Configuration file of the selected agent.
Use ${...} expressions to refer parameter values.
Default parameters:
${name}: component name${instance}: instance name${version}: version${service.name}: service name (kubernetes deployment)
Sample configuration for OpenTelemetry:
otel.service.name = ${service.name}
otel.resource.attributes = service.version=${version}
otel.exporter.otlp.protocol = http/protobuf
otel.exporter.otlp.traces.protocol = http/protobuf
otel.exporter.otlp.traces.endpoint = ${tracesEndpoint}
otel.exporter.otlp.metrics.protocol = http/protobuf
otel.exporter.otlp.metrics.endpoint = ${metricsEndpoint}
otel.exporter.otlp.metrics.temporality.preference = cumulative
otel.exporter.otlp.logs.protocol = http/protobuf
otel.exporter.otlp.logs.endpoint = ${logsEndpoint}
Sample configuration for Application Insights:
{
"connectionString": "${connectionString}",
"role": {
"name": "${service.name}"
},
"customDimensions": {
"service.version": "${version}"
},
"sampling": {
"percentage": 100
},
"instrumentation": {
"logging": {
"level": "OFF"
}
}
}
Configuration Parameters
Provide parameters for your configuration file.
Examples:
connectionString = InstrumentationKey=00000000-0000-0000-0000-000000000000
tracesEndpoint = https://otel-collector:4318/v1/traces
metricsEndpoint = https://otel-collector:4318/v1/metrics
logsEndpoint = https://otel-collector:4318/v1/logs
Deployment Environment
Select a value for the OpenTelemetry deployment.environment attribute.
Choose between:
production: example value used in OpenTelemetry documentationstaging: example value used in OpenTelemetry documentationtestingdevelopment
If nothing is selected, then this attribute will not be set.
In case the attribute is set in the Agent Configuration as well, the configuration provided here wins.
You may use this attribute for filtering, e.g. to separate information from prod and test for metrics and traces.
Kerberos Login
Plugin: nevisadmin-plugin-nevisauth
The Kerberos Login configures Kerberos authentication based on the simple and protected GSS-API negotiation mechanism (SPNEGO) for nevisAuth.
Kerberos Realms
Enter the allowed Kerberos realms (AD domains).
Example:
SIVEN.CH
In case multiple values have to be configured you can define which Keytab File or Keytab File Path
to use by referencing its file name.
Example:
SIVEN.CH -> kerberos_ch.keytabSIVEN.DE -> kerberos_de.keytab
Frontend Addresses
Enter the Frontend Addresses of the nevisProxy Virtual Host patterns
for which this pattern provides authentication.
Example:
www.siven.ch
In case multiple values are configured you can define which Keytab File or Keytab File Path
to use by referencing its file name.
Example:
www.siven.ch -> kerberos_ch.keytabwww.siven.de -> kerberos_de.keytab
Keytab File
Upload the Kerberos keytab file.
nevisAuth uses this file to validate Kerberos tokens sent by browsers.
Please check the nevisAuth Technical Documentation on how to create this file.
In complex setups with multiple Kerberos Realms and/or Frontend Addresses
you may have to upload multiple keytab files.
For increased security we recommend to use a variable containing either:
- a nevisAdmin secret file
- a file stored in a Kubernetes secret (
k8s-secret-file://<secret-name>:<file-name>/)
Alternatively, you can also set Keytab File Path instead of uploading and deploy the file by other means (e.g. a volume mount).
Important: When uploading the file directly, note that the pattern does not rename the file.
If you have multiple Kerberos Login patterns, you have to use a different file name in each pattern.
Keytab File Path
Enter the path of the Kerberos keytab file.
The path must exist on the target host(s) of the nevisAuth Instance.
This configuration is ignored when keytab file(s) are uploaded via Keytab File.
In complex setups with multiple Kerberos Realms and/or Frontend Addresses
you may want to enter multiple keytab file paths.
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 authentication step that is processed if Kerberos authentication fails.
If no step is assigned an AuthState Authentication_Failed
will be created automatically.
Authentication Level
Authentication level that is set on success.
Limit Session Lifetime
If set to true then the lifetime of the underlying Kerberos service ticket used by the client during the SPNEGO negotiation
will be considered when determining the lifetime of Nevis session. In this case the expiration time of Nevis session cannot
be longer than the expiration time of the Kerberos service ticket.
Default is false.
Custom Properties
Enter custom properties for the nevisAuth ch.nevis.esauth.auth.states.kerberos.KerberosLoginAuthState.
You can add new properties or overwrite properties generated by the pattern.
For instance, you may set permittedRealms to * to allow any realm, or adapt the userIdFormat to your needs.
LDAP Login
Plugin: nevisadmin-plugin-nevisauth
Username / password login for LDAP.
For Web Application, an initial redirect (to ?login) is performed and a login GUI is shown.
Basic authentication may be used to call a REST or SOAP service.
Double-check the URL you are calling as
nevisProxy responds with a redirect if no servlet could be found otherwise (trailingSlashRedirect).
LDAP Endpoints
Configure the LDAP endpoint.
The URL must start with ldap:// or ldaps://
In case of ldaps:// you may have to import the certificate of the CA which has issued the certificate
of the LDAP server into the Backend Trust Store on the nevisAuth Instance.
Connection Username
User to connect with. This user is part of the LDAP connection url.
Example:
- CN=admin,O=company,C=ch
Connection Password
Password of the connection user. The user is part of the LDAP connection url.
Example:
- secret://Ll41Zsw54rmeNi2ZeoZD
- verySecretPassword
See the nevisAuth Reference Guide UseridPasswordAuthenticateState for more details on how to use obfuscated password.
Base DN
Specifies the directory subtree where all users are located.
Example:
- ou=people,o=company,c=ch
Search In Subtree
If disabled all the users to authenticate must be in the same directory node,
specified in the properties Base DN and User Attribute.
In this case nevisAuth uses the user's account to authenticate against the LDAP directory.
If enabled a search query for the user is performed, with the specified Base DN.
User Attribute
Specifies the attribute in the LDAP directory that should match the users login-ID input.
Examples:
uidcn
Directory Type
Configure the type of LDAP directory.
LDAP Attribute Mappings
Defines mappings from LDAP attributes to delegate names. The specified LDAP attributes are queried and set as output arguments with the specified output argument name.
<attribute-name-in-directory>:<output-argument-name><attribute-name-in-directory>
Examples:
givenNamemail:emailtelephoneNumber:user.mobile
On Success
Configure the step to execute after successful authentication. If no step is assigned, the process ends and the user will be authenticated.
On User Not Found
Assign an authentication step to be invoked if the user could not be found.
For instance, you may use this setting to chain multiple LDAP Login patterns,
e.g. to lookup users based on a different User Attribute or in separate LDAP Endpoints.
The following notes will also be set and may be shown if the next state renders a GUI:
lasterror = 1
lasterrorinfo = authentication failed, invalid input
lastresult = usernotfound
On Invalid Password (Fallback)
Assign an authentication step to be processed if the user is found but the password is incorrect.
Use for custom reporting or error handling.
If no step is assigned the GUI is displayed again and an error message will be shown.
This setting is experimental and may be adapted in future releases.
On Password Expired
Assign a pattern which defines the step that is executed when the user must change his password.
If no pattern is assigned the next AuthState is Authentication_Failed
which terminates the authentication process.
On Failure
Assign an authentication step that is processed if LDAP authentication fails with an technical error, or if the user is not unique.
If no step is assigned an AuthState Authentication_Failed
will be created automatically.
User Filter
Enter an LDAP Filter.
Use when the user has to be determined with custom criteria.
When configured this is used instead of User Attribute.
Example:
(|(${notes:userid}=cn)(${notes:userid}=mail))
For debugging the authentication set the log level of JNDI to DEBUG.
Authentication Level
Set an authentication level if authentication of this step is successful.
Custom Properties
Set custom properties for the UseridPasswordAuthenticateState.
Examples:
searchSizeLimit = 512
Logout
Plugin: nevisadmin-plugin-nevisauth
A logout can be triggered by sending a request with query parameter logout
to a protected location. For example: /my-app/?logout
The default flow renders a GUI with a message and a submit button.
On submit the user is redirected to the same URL with the query parameter logout removed.
This leads to re-authentication. The logout flow cannot be aborted.
Note that in Chrome the logout GUI may NOT be shown because some versions sends multiple GET requests.
Use this pattern to customize the logout flow by showing a different message or redirecting to a different URL (in this case the GUI will not be shown).
Note that if the application is protected by a SAML SP Realm the logout process is managed by the IDP. Thus, the pattern is to be assigned to the realm of the IDP instead.
Logout Behaviour
gui- shows a logout GUI. On submit the user is redirected to the same URL with the query parameterlogoutremoved.redirect- does not show a GUI. The user is immediately redirected to the given URL or path.
Custom Label
Enter a label for the message that shall be presented to the user.
This is used when Logout behavior is set to gui.
Redirect
Enter a URL or path to redirect to after logout.
Lua HTTP Processing
Plugin: nevisadmin-plugin-nevisproxy
Sets up a filter in nevisProxy which evaluates a Lua script.
The filter class is ch::nevis::isiweb4::filter::lua::LuaFilter.
Assign this pattern to your applications to perform complex request or response processing tasks.
Lua Script
Upload a Lua script which should be invoked for requests and / or responses. The script has to contain one or multiple of the following Lua functions:
function inputHeader(request, response)- called once per requestfunction input(request, response, chunk)- called once per request body chunkfunction outputHeader(request, response)- called once per responsefunction output(request, response, chunk)- called once per response body chunk
The uploaded script will be deployed to the nevisProxy host in sub-directory WEB-INF using
the name of this pattern for the file name to ensure that the file name is unique.
Here is an example Lua script which replaces sensitive information in response bodies:
local buf = {}
function output(request, response, chunk)
if chunk ~= nil then
table.insert(buf, chunk)
return nil
else
return string.gsub(table.concat(buf), "some-sensitive-data", "*****");
end
end
The following expressions can be used anywhere within the script:
${name}- sanitized name of this pattern${host}- name of theVirtual Hostdirectory${instance}- name of thenevisProxy Instancedirectory
Lua Libraries
Upload addtional Lua libraries to be used within the Lua Script.
Uploaded files will be deployed to the following directory:
/var/opt/nevisproxy/${instance}/${host}/WEB-INF/lib/${name}/"
The Lua script must patch package.path so that the Lua libraries can be used.
For instance, add the following line at the beginning of the script:
package.path = package.path .. ";/var/opt/nevisproxy/${instance}/${host}/WEB-INF/lib/${name}/?.lua"
Filter Phase
Defines the position of the filter-mapping for this Lua filter. Which position to choose depends on your use case.
For requests filters will be invoked from START to END.
For responses filters will be invoked from END to START.
Choose from the following filter phases:
START: applied as early as possible for requests and as late as possible for responses.BEFORE_SANITATION: applied before filters which validate the request (e.g. Mod Security).SANITATION: used for security. This is the first phase which allows accessing the session for applications protected by a realm.AFTER_SANITATION: your request has passed security checks.BEFORE_AUTHENTICATION: applied just before authentication.AUTHENTICATION: used by the filter which connects to nevisAuth for applications which are protected by anAuthentication Realm.AFTER_AUTHENTICATION: the request has level 1 authentication. Used byAuthorization PolicyforAuthentication Levelstepup.BEFORE_AUTHORIZATION: choose this phase to do preprocessing before authorization.AUTHORIZATION: used byAuthorization PolicyforRequired Rolescheck.AFTER_AUTHORIZATION: used by patterns assigned asApplication Access Tokento applications.END: applied as late as possible for requests and as early as possible for responses.
Script Parameters
Parameters defined here can be used inside the Lua script.
The name of each parameter must start with param_. This limitation may be lifted in a future release.
The value will be trimmed.
Set this property if you need a different value depending on the inventory.
- click
varto use a nevisAdmin 4 variable for the entire setting:- Enter a good name for the variable as the default may be quite verbose.
- Enter some sample values to document the variable in the project.
- add the nevisAdmin 4 variable to your inventories:
- See below for an example which illustrates the syntax.
Example inventory variable:
vars:
example-variable:
param_example_string: "on"
param_example_numeric: 60
It is sometimes required to quote values.
In the example above, the value on would be converted to a boolean value if it weren't for the double quotes ".
When unsure, always put double quotes around the value.
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 |
Maintenance Page
Plugin: nevisadmin-plugin-nevisproxy
Shows a static maintenance page if the current date and time is within a certain interval.
Technical note: nevisProxy uses system calls to determine the current time in UTC.
To check if UTC time is correct, run date -u on the nevisProxy host.
You can assign the pattern using Additional Settings to applications,
or an entire Virtual Host.
Show Maintenance Page
Allows to easily enable / disable the maintenance with being forced to set a time window.
Start
Enter the start date and time of the maintenance window.
- format:
yyyy-mm-dd HH:mm(24 hours) - timezone: UTC (not your local time)
- example:
2020-05-20 15:00
End
Enter the end date and time of the maintenance window.
- format:
yyyy-mm-dd HH:mm(24 hours) - timezone: UTC (not your local time)
- example:
2020-05-20 15:00
Maintenance Page
The page must contain two meta-tags which define the maintenance interval and will be patched during generation.
Example:
<head>
<meta name="maintenance-start" content="${maintenance-start-value}">
<meta name="maintenance-end" content="${maintenance-end-value}">
</head>
If the date and time on the target host are within this interval, the maintenance page will be shown. See also the introduction help text above.
Status Code
The status code of the response with the maintenance page.
By default, the response is sent with status code 503 for Service Unavailable.
Base Path
Enter the base path under which the maintenance page will be hosted.
You usually don't have to change this configuration, unless the path clashes with any other hosted resources.
By default, /maintenance/ is used.
Update Interval
Enter the time interval between checks of the maintenance page.
- In normal mode, the system checks the maintenance page for updates when a request comes in, if the configured interval has passed since the last check.
- In maintenance mode, the system ignores the
UpdateIntervaland fetches the maintenance page on each request.
Microsoft Login Step
Plugin: nevisadmin-plugin-oauth
Set up social login, using Microsoft as OpenID Connect provider.
Client ID
ClientID is Application (client) ID provided by Microsoft when you create an Application Microsoft.
Client Secret
Client Secret is Client Secret provided by Microsoft when you create an Application Credentials & Secrets in Microsoft.
Return Path
The callback URI to go to after a successful login with Microsoft.
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/microsoft/ - Frontend Address:
https://nevis.net
Then the URL will be https://nevis.net/oidc/microsoft/.
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 scope(s) for getting user information from Microsoft. Default scopes is email.
Scope openid will be added automatically because Microsoft is implement based on OpenID protocol.
Scope offline_access for generate refresh token.
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.
Application Type
The application type that you choose when you create your application in Microsoft. We are supporting 3 types
- common
- organizations
- consumers
Please follow this document to select your application type correctly
Tenant ID
Enter the Tenant ID of your Azure Active Directory.
This setting is used when Application Type is set to organizations.
Check Microsoft documentation on How to find your Azure Active Directory tenant ID.
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 a label for the social login button.
Translations for this label can be configured in the Authentication Realm pattern.
Mobile Deregistration Service
Plugin: nevisadmin-plugin-nevisfido
Set up processes required for mobile device deregistration.
The services are called by the mobile app, e.g., when you delete your account in the mobile app.
This use cases uses FIDO UAF Credential Deregistration to de-register FIDO credentials.
Virtual Host(s)
A virtual host assigned will be used to expose the protected services.
Authentication Realm
To provide the best possible security, the nevisFIDO APIs required for mobile device deregistration may be protected by In-Band Authentication.
Assign an In-band Mobile Authentication Realm here.
Application Access Token
Assign a NEVIS SecToken pattern.
This pattern must also be assigned to Application Access Tokens in the Authentication Realm.
nevisFIDO
Assign a nevisFIDO UAF Instance. This instance will be responsible for providing the mobile device deregistration services.
Mobile TAN (mTAN)
Plugin: nevisadmin-plugin-nevisauth
Use to send a TAN code to the user using SMS, for example, for second factor authentication.
The pattern works out-of-the-box as On Success for nevisIDM Password Login,
in case the mobile is stored on the user.
In case users may have multiple mobiles and the mobile is stored in a mobile credential,
add the nevisIDM Second Factor Selection in front of this step.
To configure the message template sent to the user,
translate the label mtan.message.template.
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 mTAN can be sent or all attempts had been exhausted.
The step will be executed in the following cases:
- there is no session variable (
user.mobileorsess:ch.nevis.idm.User.mobile) which contains the mobile number of the user - the mobile number cannot be converted into a format supported by the
Connection Provider - 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.
Buttons
Assign a Dispatcher Button to add a button which points to a different authentication step.
SMS Provider
The connection provider for the TAN transmission. Currently the only supported connection provider is a SwissPhone SMS Gateway.
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.
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 SMS will be sent and no SMS Provider 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.
NGINX Ingress Settings
Plugin: nevisadmin-plugin-nevisproxy
In Kubernetes deployments, an NGINX Ingress Controller terminates TLS connections and forwards requests to nevisProxy.
Basic settings are available in the Ingress tab of Virtual Host patterns.
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.
Annotations
Add Kubernetes annotations to customize the behavior of the NGINX ingress.
Restrict access based on source IP:
nginx.ingress.kubernetes.io/whitelist-source-range: 213.189.148.0/24,173.245.48.0/20,103.21.244.0/22
Increase the maximum allowed request size:
nginx.ingress.kubernetes.io/proxy-body-size: 10m
Please read Annotations - NGINX Ingress Controller for details.
TLS Secrets
Use your own Kubernetes secrets to provide the frontend key store for a Virtual Host.
Syntax is a map of (primary) frontend address of the host to secret name.
www.siven.ch: customsecretname
Secrets must be of type: kubernetes.io/tls. Secrets must be prepared before deployment.
They must contain a private key (tls.key), a matching certificate (tls.crt) and should contain the CA chain (ca.crt).
If not set the Nevis operator request certificates from the cluster issuer
and generates a secret for each Virtual Host to store the required key material.
Ingress Class Name
Defines the ingressClassName of the generated ingress. It can be used instead of the kubernetes.io/ingress.class annotation to select which
ingress controller should handle the generated ingress.
For more information see Multiple Ingress controllers.
Client Cert Authentication
Enables client certificate validation in the NGINX Ingress.
Please note that client cert validation cannot be used when the TLS connection is terminated in front of the NGINX Ingress.
Choose between:
-
enabled: Request a client certificate that must be signed by a certificate that is included in theCA Secret. Failed certificate verification will result in a status code400 (Bad Request)(unlessError Pageis configured`). -
optional: Do optional client certificate validation against the CAs. Requests will fail with status code400 (Bad Request)when a certificate is provided that is not signed by the CA (unlessError Pageis configured`). When no or an otherwise invalid certificate is provided, the request does not fail, but instead the request is allowed to pass through. -
optional_no_ca: Do optional client certificate validation, but do not fail the request when the client certificate is not signed by the CAs fromCA Secret. The secret still has to exist with a valid certificate. -
disabled(default): Don't request client certificates and don't do client certificate verification.
This setting is used to generate the following annotation for the NGINX Ingress:
nginx.ingress.kubernetes.io/auth-tls-verify-client
CA Secret
Enter the name of the Kubernetes secret which contains the CA certificate in the key ca.crt. If the secret does not exist it will result in 403 (Forbidden), and with a missing ca.crt key
the feature will not be enabled.
Can be created with:
kubectl create secret generic ca-secret --from-file=ca.crt=ca.crt
The ca.crt file can contain multiple certificates.
CA Secret Namespace
Enter the namespace of the CA Secret.
Client Cert Validation Depth
The maximum validation depth between the provided client certificate and the CA chain. (default: 1).
You only need to increase this if you only have a parent CA in the CA Secret but want to accept client certificates which have been issued by a child CA.
Error Page
An error page which will be presented in case of certificate validation error.
If you enter a path (e.g. /errorpages/403.html) then that path will be fetched from nevisProxy.
If you enter a URL then the caller is redirected to that URL.
Propagate Client Cert
Indicates if the received certificates should be passed on to nevisProxy in the header ssl-client-cert.
Path
Define a custom path for the generated ingress resource.
Example:
/nevis/
This is an ingress specific setting, the endpoints have to be configured separately to be available under the defined path. When using side-by-side deployment, the path must be the same between the primary and secondary deployment.
TLS Settings
If disabled, the TLS related settings are removed from the generated Ingress resource,
which means the default certificate provided by NGINX will be used for the TLS termination.
It's only recommended to use this option, when an additional loadbalancer is used in front of NGINX (e.g. Cloudflare), which already provides a valid certificate.
NodePort Service
If enabled, the generated services for the Ingresses will be of type NodePort. This allows direct connection to the nevisProxy instance.
Nevis SecToken
Plugin: nevisadmin-plugin-nevisauth
Assign to a realm using Application Access Tokens.
This enables the realm to produce a Nevis SecToken.
To issue a SecToken and propagate it to applications,
also assign the pattern to the corresponding Web Application,
REST Application, or SOAP Application using Application Access Token.
The SecToken is transferred as Basic Auth password.
On the application server you have to use Ninja to extract the SecToken
from the Authorization header. You can download Ninja from the Nevis Portal.
As Ninja validates the signature of the SecToken, you have import the signer certificate into the Ninja truststore.
User Attributes
Set the content of the Nevis SecToken.
Example:
| Attribute | Variable |
|---|---|
| userid | request:UserId |
| loginId | session:ch.nevis.session.loginid |
| profileId | session:ch.adnovum.nevisidm.profileId |
| clientId | session:ch.adnovum.nevisidm.clientId |
| domain | session:ch.nevis.session.domain |
| roles | request:ActualRoles |
Supported variable scopes are:
session- a session variable.request- a variable from the request.const- a fixed value.
This configuration should work for most backend applications, including NEVIS components.
The userid is required by Ninja and must always be set.
You can use ch.nevis.session.loginid when this pattern is not part of the Initial Authentication Flow.
The loginId, profileId, clientId are required by nevisIDM.
The domain is required by nevisAdapt.
The attribute roles is required by nevisWF and nevisMeta.
For some attributes there are multiple variables to choose from.
Check the nevisAuth log with log levels of Vars set to INFO
to find out which variables are available in your case.
Signer Key Store
Assign a pattern which sets the key material used for signing the token.
If no pattern is assigned automatic key management is used and the signer key will be created automatically.
Custom Header
Set a custom header instead of the default Authorization header.
OATH Authentication
Plugin: nevisadmin-plugin-nevisidm
Ask the user for a One-Time Password (OTP) from an authenticator app.
Use in combination with an app hat supports OATH TOTP, such as the Google or Microsoft Authenticator.
The nevisIDM Password Login or nevisIDM User Lookup step
has to be executed before this step to set the user in the session.
This step can be used as a follow-up of nevisIDM Second-Factor Selection.
The user has to have a OATH credential with label Default.
To create this credential, use the OATH Onboarding pattern.
nevisIDM
Reference the nevisIDM Instance which has been used for first factor authentication.
Authentication Level
Authentication level that is set on success.
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 Cancel
If assigned, the user can cancel the OATH authentication.
Define which step to continue with.
Client Name
This has to be configured when you have multiple Clients in nevisIDM.
If the client name is always the same, you may enter the name directly.
If the client name depends on the authenticated user,
try the expression ${sess:ch.adnovum.nevisidm.clientName} instead.
Login Type
Sets the type of login identifier which will be used to look up the user.
In nevisIDM any client whose users should be able to log in with their email address must have the following entry in the Client policy:
authentication.loginWithEmail.enabled=true
OATH Onboarding
Plugin: nevisadmin-plugin-nevisidm
Onboard an authenticator app that supports OATH TOTP, such as the Google or Microsoft Authenticator.
The user has to scan a QR code to complete the onboarding.
This pattern is experimental and the rendered GUI may be changed in future releases, depending on customer requirements.
The user must have been set in the session already. For instance,
put a nevisIDM Password Login or nevisIDM User Lookup step in front of this step.
You may can also assign this step as Not Found to nevisIDM Second-Factor Selection.
nevisIDM
Reference the nevisIDM Instance which has been used for first factor authentication.
On Success
Assign a step to execute after onboarding the authenticator app.
We recommended to assign OATH Authentication to validate that the onboarding was successful.
Also note that the nevisIDM Second-Factor Selection pattern only considers OATH credentials
which have passed the OATH Authentication once.
If no step is assigned the process ends and the user will be authenticated.
On Cancel
If assigned, the user can cancel the OATH onboarding.
Define which step to continue with.
Client Name
This has to be configured when you have multiple Clients in nevisIDM.
If the client name is always the same, you may enter the name directly.
If the client name depends on the authenticated user,
try the expression ${sess:ch.adnovum.nevisidm.clientName} instead.
OAuth 2.0 / OpenID Connect Dynamic Client Registration Endpoint
Plugin: nevisadmin-plugin-oauth
Links to a Dynamic Client Registration endpoint for OAuth 2.0 / OpenID Connect.
The information is by OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
Endpoint Path
Enter the URL of the registration endpoint.
Note that if the value contains a hostname, this pattern will not set up a registration endpoint, it just provides information about that endpoint.
The information is then used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
The prefix exact: is not supported here, enter the path as-is.
OAuth 2.0 / OpenID Connect JWKs Endpoint
Plugin: nevisadmin-plugin-oauth
Sets up a JWKs endpoint for OAuth 2.0 / OpenID Connect.
Endpoint Path
If you enter a path the REST service will be generated and exposed on the nevisProxy Virtual Host
assigned to the OAuth 2.0 Authorization Server / OpenID Provider.
The prefix exact: is not supported here, enter the path as-is.
If you enter a URL no REST service will be generated. Use this variant if you want to use an external service.
Either way, the information will be used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
OAuth 2.0 / OpenID Connect Metadata Endpoint
Plugin: nevisadmin-plugin-oauth
Sets up a Metadata endpoint for OAuth 2.0 / OpenID Connect.
Endpoint Path
If you enter a path the REST service will be generated and exposed on the nevisProxy Virtual Host
assigned to the OAuth 2.0 Authorization Server / OpenID Provider.
The prefix exact: is not supported here, enter the path as-is.
If you enter a URL no REST service will be generated. Use this variant if you want to use an external service.
Either way, the information will be used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
OAuth 2.0 / OpenID Connect Pushed Authorization Request Endpoint
Plugin: nevisadmin-plugin-oauth
Sets up a Pushed Authorization Request endpoint for OAuth 2.0 / OpenID Connect.
Endpoint Path
If you enter a path the REST service will be generated and exposed on the nevisProxy Virtual Host
assigned to the OAuth 2.0 Authorization Server / OpenID Provider.
The prefix exact: is not supported here, enter the path as-is.
If you enter a URL no REST service will be generated. Use this variant if you want to use an external service.
Either way, the information will be used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
Protected Endpoint
Set Basic authentication for REST Service of OAuth 2.0 Authorization Server / OpenID Provider.
When this property is enabled, the request must include Authentication Header.
The header is a combination of clientID and clientSecret with base64 encoded
Request Timeout
Configure how the PAR request shall be valid.
For security reasons, we suggest to keep this duration as low as possible.
If not set, the default in the nevisAuth component (90s) applies.
OAuth 2.0 / OpenID Connect Token Introspection Endpoint
Plugin: nevisadmin-plugin-oauth
Sets up a Token Introspection endpoint for OAuth 2.0 / OpenID Connect.
Endpoint Path
If you enter a path the REST service will be generated and exposed on the nevisProxy Virtual Host
assigned to the OAuth 2.0 Authorization Server / OpenID Provider.
The prefix exact: is not supported here, enter the path as-is.
If you enter a URL no REST service will be generated. Use this variant if you want to use an external service.
Either way, the information will be used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
Protected Endpoint
Set Basic authentication for REST Service of OAuth 2.0 Authorization Server / OpenID Provider.
When this property is enabled, the request must include Authentication Header.
The header is a combination of clientID and clientSecret with base64 encoded
OAuth 2.0 / OpenID Connect Token Revocation Endpoint
Plugin: nevisadmin-plugin-oauth
Sets up a Token Revocation endpoint for OAuth 2.0 / OpenID Connect.
Endpoint Path
If you enter a path the REST service will be generated and exposed on the nevisProxy Virtual Host
assigned to the OAuth 2.0 Authorization Server / OpenID Provider.
The prefix exact: is not supported here, enter the path as-is.
If you enter a URL no REST service will be generated. Use this variant if you want to use an external service.
Either way, the information will be used by the OAuth 2.0 / OpenID Connect Metadata Endpoint to provide metadata.
Protected Endpoint
Set Basic authentication for REST Service of OAuth 2.0 Authorization Server / OpenID Provider.
When this property is enabled, the request must include Authentication Header.
The header is a combination of clientID and clientSecret with base64 encoded
OAuth 2.0 / OpenID Connect User Info
Plugin: nevisadmin-plugin-oauth
An OAuth 2.0 Authorization Server / OpenID User Info returns information about the authenticated user.
Virtual Host(s)
Assign a Virtual Host which shall serve as entry point.
Authentication Realm
Assign a realm which shall be exposed to get user information of an OAuth2 Authorization Server or OpenID Connect Provider.
Endpoint
Enter the path where the endpoint shall be exposed on nevisProxy.
Use the exact: prefix to expose only the given path.
Without this prefix sub-paths will be accessible as well.
This is because a normal mapping with /* at the end will be created in nevisProxy.
Signer
Configure the key material which is used to validate tokens. This signer must be the same signer that use to sign the tokens.
nevisIDM
Assign a nevisIDM Instance or nevisIDM Connector to get user information.
OAuth 2.0 Authorization Server / OpenID Provider
Plugin: nevisadmin-plugin-oauth
An OAuth 2.0 Authorization Server / OpenID Provider can issue tokens for a client, considering the requested scopes, claims, and end user consent.
See AuthorizationServer for details.
The pattern is experimental. We recommend to use it for prototyping configuration only as there may be breaking changes in future versions.
The metadata of OAuth 2.0 clients is managed in nevisMeta.
The pattern nevisMeta Web Console should be configured as well.
Virtual Host
Assign a Virtual Host which shall serve as entry point.
Authorization Path
This is the path where relying parties redirect the browser to.
Example use cases:
- OAuth: acquire an access and refresh tokens
- OpenID Connect: acquire access, refresh and ID tokens
Use the exact: prefix to expose only the given path.
Without this prefix sub-paths will be accessible as well.
This is because a normal mapping with /* at the end will be created in nevisProxy.
Token Path
The endpoint to exchange the authorization code for tokens.
Use the exact: prefix to expose only the given path.
Without this prefix sub-paths will be accessible as well.
This is because a normal mapping with /* at the end will be created in nevisProxy.
Authentication Realm
Assign a realm which shall be exposed as an OAuth2 Authorization Server or OpenID Connect Provider.
Signer
Configure the key material which is used to sign issued codes and tokens.
Access Token Format
Choose between:
-
JWE: the access token will be encrypted. This is the default. The token is considered opaque and thus resource servers need to call the token introspection endpoint to validate the token. -
JWS: the access token will not be encrypted. Choose this mode to get a signed token which can be validated without calling the token introspection endpoint. A JWKS endpoint will be added to this pattern in 2022.
OpenID Connect
If enabled the scope openid is allowed for this client.
OpenID Connect Issuer
Enter the issuer for OpenID Connect.
The value must be a case-sensitive URL using the https scheme that contains at least scheme and host. The port number and path component are optional. No query or fragment components are allowed.
If not set the issuer will be calculated based on:
- the first
Frontend Addresswith schemehttpsof the assignedVirtual Host - the first
Frontend Path
Access Token Claims
Configure additional claims for the OAuth2.0 Access Token.
Claims are added if they have a value.
For instance, claims may be added when a certain scope is requested which includes them.
OpenID Connect defines the following scope values which may be requested to get claims:
profile. claims:name,family_name,given_name,middle_name,nickname,preferred_username,profile,picture,website,gender,birthdate,zoneinfo,locale,updated_at.email. claims:email,email_verifiedaddress. claims:addressphone. claims:phone_number,phone_number_verified
Examples:
given_name=${sess:ch.nevis.idm.User.firstName}
family_name=${sess:ch.nevis.idm.User.name}
email=${sess:ch.nevis.idm.User.email}
mobile=${sess:ch.nevis.idm.User.mobile}
ID Token Claims
Define claims for the OpenID Connect ID token.
For the value you can use a constant, a nevisAuth expression, an EL expression,
or refer to an inventory variable by using the ${var.<name>} syntax.
Note that you also have to do this for standard OpenID Connect claims.
The only exception are sub, iss which will always be added.
Here are some examples:
| Claim | Value |
|---|---|
given_name | ${sess:ch.nevis.idm.User.firstName} |
family_name | ${sess:ch.nevis.idm.User.name} |
email | ${sess:ch.nevis.idm.User.email} |
mobile | ${sess:ch.nevis.idm.User.mobile} |
customer | ${var.customer-number} |
Which claims will be added to the ID token depends on the incoming request.
Non-standard claims have to be requested using the claims request parameter.
Standard claims are added when a certain OpenID Connect scope is requested:
| Requested Scope | Added Claims |
|---|---|
profile | name, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, website, gender, birthdate, zoneinfo, locale, updated_at |
email | email, email_verified |
address | address |
phone | phone_number, phone_number_verified |
REST Endpoint(s)
Add extension services for OAuth 2.0 Authorization Server / OpenID Provider
JWK Set Key ID
When set to enabled a kid header value will be added to issued access and ID tokens.
The value allows the authorization server to explicitly signal a change of key material to recipients.
The meaning of the kid header is slightly different for signed and encrypted tokens.
nevisMeta
Assign a nevisMeta Instance or nevisMeta Connector.
nevisMeta is used to lookup metadata for the given
OAuth2 / OpenID Connect Setup (see Setup ID).
Setup ID
ID of the nevisMeta setup.
Create your setup via the nevisMeta Web Console.
Then the ID of the setup can be determined. There are several ways to do that:
- hover over the icon which links to the REST API
- export the setup and check the exported files
- Configure a
nevisMeta REST Service, login and send aGETto/nevismeta/rest/v2/modules/oauthv2/setups/
Cache Timeout
Caching of responses from a nevisMeta instance. After this time (in seconds), a response is considered outdated and attempts are made to update it.
nevisIDM
Assign a nevisIDM Instance or nevisIDM Connector.
Required when User Info is enabled.
Assignment is required to determine the URL for the REST API call to the nevisIDM user info endpoint.
User Info
When enabled, the nevisIDM user info endpoint is called to retrieve information about the authenticated user.
The following property will be added to the configuration of the AuthorizationServer AuthState:
<property name="openid.userInfoEndpointUri" value="https://<idm-host>:<idm-port>/nevisidm/api/oic1.0/userinfo"/>
For reasons of backward compatibility, the default is disabled.
The information from the user info endpoint is used to populate any claims in the returned ID and access tokens.
Auth Code Lifetime
How long an authorization code issued by the authorization server should be valid.
Refresh Token Rotation
Defines if a new Refresh Token is issued together with the Access Token on the Token Endpoint while exchanging a
refresh token for a new access token (grant_type=refresh_token).
- enabled, a new Refresh Token is issued, the existing Refresh token is deleted.
- disabled, the existing Refresh token is returned and remains valid.
Remove Empty Claim(s) In Token
Defines if the empty claim(s) will appear in the Access Token and ID Token.
- enabled: the ID Token and Access Token will not include empty claim(s).
- disabled (default): the ID Token and Access Token may include empty claim(s).
Audience Field Strategy
Defines whether the audience (aud) claim is added to the issued Access Tokens, following
RFC 9068 and RFC 8707.
- disabled (default): the Access Token will not contain the
audclaim. Theresourcerequest parameter is ignored. - resource: the audience is derived from the
resourcerequest parameter or from the configured resource servers in nevisMeta that own the requested scopes. The eligible resource servers must have theURLfield set in nevisMeta. Requires nevisMeta as the data source.
JWK Set Endpoint Trust Store
Assign a trust store for the outbound TLS connection to JWK Set endpoint for ID Token encryption.
Import the CA certificate of the JWK Set endpoint into this trust store.
Since version 4.38 nevisAuth trusts CA certificates included in the JDK.
Thus, it is not required to configure this.
However, you can still configure a trust store here to be as strict as possible.
JWK Set Endpoint Proxy
Forward proxy for the connection to the JWK Set endpoint for ID token encryption. Enter the hostname:port here
Example: proxy.your-internal-domain:3128
Invalid Client
Configure the step to execute after error when the client sending the request is not registered.
If no step is configured here the process ends and the error will display on UI.
Invalid Redirect URI
Configure the step to execute when the redirect_uri request parameter value is not registered for the client sending the request.
If no step is configured here the flow ends and an error will be displayed.
Valid Authorization Request Authentication Required
The nevisMeta UI has a setting on the Client called Force Reauthentication.
If enabled, users need to authenticate for every invocation of the Authorization Path.
To ensure that this setting works out of the box, this pattern generates configuration
which always dispatches the request into the Initial Authentication Flow of the assigned Authentication Realm.
If you want to use a different authentication flow for re-authentication, then assign a different step here.
When configured, a ResultCond with name valid-authorization-request-authentication-required will be added.
Authentication Successful Without Login
Configure the step to execute after authorization request is valid and end-user authentication can be skipped.
If no step is configured here the process ends and the final AUTH_DONE will be reached.
Invalid Authorization Request
Configure the step to execute after error when the authorization request is invalid. Example:
- Cannot parse Authorization Request
- Request
response-typemismatch with client configuration - Invalid scope
- Policy not allow
- PKCE method not support
- Missing code challenge
- Plain code challenge
If no step is configured here the process ends and the error will display on UI.
Invalid Token Request
Configure the step to execute after error when token request is invalid and token error response is about to be issued.
If no step is configured here the process ends and the error response issued and return to the client.
Custom Transitions
Add or overwrite ResultCond elements in the AuthorizationServer state.
This setting is advanced. Use without proper know-how may lead to incorrect behavior.
If you use this setting, we recommend that you contact Nevis to discuss your use case.
The position refers to the list of Additional Follow-up Steps. The position starts at 1.
Examples:
ResultCond | Position |
|---|---|
| valid-token-request | 1 |
| valid-authorization-request | 2 |
The following ResultCond elements cannot be overruled by this setting:
authenticate:valid-authorization-requeststepup:valid-authorization-requestserver-errorinvalid-client(configureInvalid Clientinstead)invalid-redirect-uri(configureinvalid Redirect URIinstead)invalid-authorization-request(configureInvalid Authorization Requestinstead)invalid-token-request(configureInvalid Token Requestinstead)
Custom Follow-up Steps
Assign follow-up steps.
The order of steps is relevant.
The first step in this list has index 1.
You may reference a step in the configuration
via the Custom Transitions.