Upgrade Appkit in Existing Apps
package.json
file at the root of your project, update the appkit-ui
dependency to the latest Appkit version, for example:
pom.xml
file at the root of your project, update the value of the parent.version
property to the latest Appkit version, for example:
spring-security.xml
file:
userName
and password
configuration values from your Fusion platform configuration to services/api/fusion.conf
in this version.impersonate
configuration option to be set to true
. If the option is set to true
in services/api/fusion.conf
, it is ignored.
For more information, see Fusion authorization.
AuthorisationFilter
logic, you can and should re-implement those filters as instances of PreAuthorisationFilter
, if the intention of those filters is not to authorize a request, but instead to augment the user object with pre-authorization information. However, this is not a necessary requirement for upgrading, because existing authorization filters work exactly as before. (They run after the pre-authorization filters.)
pom.xml
file:
pom.xml
file:
conf/message/service/fusion.conf
. You can send signal events to Fusion using either the Signals API or the Query API. This is an example in which the query-profile parameter is used to send events with the Fusion Query API:
signals-index-pipeline
is an optional parameter that defines a specific index pipeline to use when indexing signals. If no index pipeline is specified, the pre-configured _signals_ingest
pipeline is used.
signals-endpoint
configuration parameter is no longer supported.activity/tracking/tracker.conf
with the property events
:
host
and port
in services/api/fusion.conf
.host
and port
in services/api/fusion.conf
, or localhost:8764
if the configuration values are not set.fusion-proxy
Java system property, which is usually only available when an Appkit app runs on the Fusion Web Apps service.fusion-discovery-enabled
in services/api/fusion.conf
:
fusion-discovery-enabled: true
(default if omitted). Appkit attempts to discover a Fusion proxy instance by reading the fusion-proxy
Java system property. If it does not discover a proxy, Appkit uses the configured host
and port
in services/api/fusion.conf
, or localhost:8764
if the configuration values are not set.
fusion-discovery-enabled: false
. Appkit does not attempt to discover a proxy, and uses the configured host
and port
in services/api/fusion.conf
, or localhost:8764
if the configuration values are not set.
fusion-discovery-enabled
parameter to fusion.conf
with a value of false
to retain the current behavior.twigkit.http.filter.DevelopmentErrorFilter
:<init-param>
block and specify the response codes as a list of comma-separated values in <param-value>
. For example:
SolrSuggestionsParserService
) now appends wt=xml
to the Solr suggestions URL automatically. You no longer need to configure this query parameter in the Fusion query profile for suggestions.
twigkit.lucene
module now uses Lucene v7.2.1. You can use the twigkit.lucene
module with other modules, for example, Elasticsearch 6, that use more recent versions of Lucene.
requestMethod
for the Solr search platform has been changed from GET to POST.
conf/security/access.conf
to your application’s configuration tree with these configuration parameters:
allow
: A comma-separated list of roles that should be granted access. When not specified or set to a wildcard (’*’), Appkit defaults to allowing access to all roles.deny
: A comma-separated list of roles that should be denied access.pattern
: A regular expression that defines the pattern of URIs that should be intercepted for checking authorization. This defaults to .* (all paths are checked).user
and admin
, where only the latter has an ADMIN
role. For example, you can define this using a simple spring-security.xml
configuration with a static list of users, like this:
conf/security/access.conf
to the application with this configuration:
/
(the root page) and the API service, Appkit applies role-based authorization rules. Including the root page is not strictly necessary, but it leads to a better experience for users who are denied access.
To validate this setup, first log in as user
. Appkit denies you access, as shown in the application logs:
admin
. Appkit allows you to access the app, as shown in the application logs:
requestMethod
for the Solr search platform has been changed to POST to avoid URL length limitations. Previously, the default was GET.
spring-security.xml
for Active Directory authentication. The <security:loginForm>
tag lacked this line, which has been added:
_system
if social.conf
specifies the collection
.collection
in social.conf
, you can specify the index-profile
and query-profile
.
slider
widget now submits the correct query.
<search:facet>
tag now displays breadcrumb names such as date
that were erroneously omitted.
label-field
is not set, Appkit no longer displays an empty tooltip when hovering over a marker on a map.
twigkit.activity.fusion-signals
module is deprecated and has been removed.twigkit.message.service.fusion.producer
module instead. For more information, see Changing how to send signals to Fusion.
impersonate
configuration option to be set to true
. If the option is set to true
in services/api/fusion.conf
, it is ignored.
userName
and password
configuration values from your Fusion platform configuration to services/api/fusion.conf
in this version.Mode | Description |
---|---|
Fusion native realm | Authorization is against the Fusion native security realm directly, using Fusion session passthrough. This is most useful for prototyping apps with Fusion’s Web Apps service. |
Service account | Authorization uses a service account in the Fusion native security realm. This is useful with external security providers, but entails having a username and password in the Appkit configuration. |
Fusion JWT realm | Authorization is of individual users against the Fusion JWT security realm. This is also useful with external security providers, and there is no username and password in the Appkit configuration that might allow an attacker to gain access to the Fusion UI. |
auto
in the Fusion authorization configuration.
Service accounts no longer require the impersonate
configuration option to be set to true
. If the option is set to true
in services/api/fusion.conf
, it is ignored. An alternative means of authorizing with a service account is provided.
native
mode as a fallback. An application is never left in a state in which it cannot at least try to authorize.services/api/fusion.conf
for configuration.
auth
configuration parameter in services/api/fusion.conf
to configure Fusion authorization. The auth
parameter can have these values.
Value | Description |
---|---|
native | Authorization is against the Fusion native realm directly, using Fusion session passthrough. This is most useful for prototyping apps with Fusion’s Web Apps service. |
serviceaccount | Authorization uses a service account in the Fusion native security realm. This is useful with external security providers, but entails having a username and password in the Appkit configuration. |
jwt | Authorization is of individual users against the Fusion JWT security realm. This is also useful with external security providers, and there is no username and password in the Appkit configuration that might allow an attacker to gain access to the Fusion UI. |
auto (default) | Appkit searches for an available authentication provider in the order (1) jwt , (2) serviceaccount , and (3) native . Appkit uses the first authorization provider that confirms it has the necessary configuration to attempt authorization. |
services/api/fusion.conf
:
Option | Description |
---|---|
userName | User name of the user for authorization (String, encryptable) |
password | User’s password (String, encryptable) |
impersonate
configuration option to be set to true
. If the option is set to true
in services/api/fusion.conf
, it is ignored.
userName
and password
configuration values from your Fusion platform configuration to services/api/fusion.conf
in this version.services/api/fusion.conf
:
Option | Description |
---|---|
issuer | Issuer that is configured in the Fusion JWT security realm (String, encryptable) |
key | Key that is configured in the Fusion JWT security realm (String, encryptable) |
groups | Group or list of groups. Groups must match those configured in the Fusion JWT security realm (Comma-separated values, encryptable) |
subject | Override the current user’s ID with this value. Use this when all JWT requests should be sent as a single user (for impersonation or service account emulation). (String; optional, encryptable) |
native
authorization.
<translations:localize>
JSP tag to load a set of UI label translations into an app. The tag syntax is:
dictionary
. Name of the resource bundle from which to load translations. This is also the first part of the name of each property file that contains translations.translations
locale
. Localeen
(English)dictionary
and locale
are used to find the file as follows:
src/main/resources
, the Appkit translation service looks for a resource bundle named dictionary
, for example, translations
.dictionary_locale.properties
, for example, for the files translations_en.properties
and translations_fr.properties
.src/main/resources
. For example, add translations_en.properties
and translations_fr.properties
to the resource bundle src/main/resources/translations
.
Edit the property files and include the label keys and translations. For example:
In translations_en.properties
:
translations_fr.properties
:
components.response-statistics.showing
is Showing {first} - {last} of {total}
in English. Translations should retain the variables, though their order might differ. Labels can use <em>
tags for emphasis, for example, More results like <em>{result}</em>
.taglib
directive at the top of your app’s index.jsp
:
<translations:localize>
JSP tag inside the <head>
element of your app’s index.jsp
:
url-rules.xml
file:
<collaborate:bookmark>
: Attributes tooltip
, active-tooltip
, singular-tooltip
, and plural-tooltip
have been removed.<collaborate:bookmark-list>
: Attribute empty-text
has been removed.<collaborate:comment-list>
: Attributes delete-label
, show-more-label
, show-less-label
, and default-delete-message
have been removed.<collaborate:like>
: Attributes tooltip
, active-tooltip
, singular-tooltip
, and plural-tooltip
have been removed.<collaborate:topic-list>
: Attribute empty-text
has been removed.<search:breadcrumbs>
: Attribute exclude-label
has been removed.<search:facet>
: Attributes show-more-label
and show-less-label
have been removed.<search:pagination>
: Attributes next-label
and previous-label
have been removed.<search:response-statistics>
: Attributes showing-all-label
, showing-label
, of-label
, and to-label
have been removed.<widget:spelling-suggestions>
: Attributes label
, original-label
, and corrected-label
have been removed.