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:
security/access
folder. Each file defines a single authorization filter. When Appkit considers whether a specific user can access a specific resource, Appkit evaluates all of the filters.
Property | Required | Notes |
---|---|---|
allow | optional | Comma-separated list of roles that allow access to a resource |
deny | optional | Comma-separated list of roles that deny access to a resource |
pattern | required | Bar-separated list of paths to which this role-based authorization filter applies |
allow
or a deny
property. You can supply both, though that is not necessary, because roles that are not allowed are denied. If you do supply both properties and a role is mentioned in both allow
and deny
, then deny
wins.
EMPLOYEES
or CONTRACTORS
can access the resources specified in the pattern
property, whereas users with the role INTERNS
cannot access the resources.
pattern
), this is not a good practice.
Appkit figures out and applies the most restrictive filter, but results might be counterintuitive. For example, filter 1 might allow users with the role CONTRACTOR
access to a specific resource, whereas filter 4 denies contractors access to the same resource. Filter 4 wins, but you wouldn’t see that if you were looking at filter 1.
<search:field>
tag, you can now specify a timezone
parameter, which tells Appkit the timezone to use when formatting date fields in responses. For example:
X-Client-Timezone
header, which specifies the browser client’s current timezone as a UTC offset.
twigkit.security.provider.fusion
) can now check whether an incoming request has a JSON web token (JWT) associated with it (in an Authorization
header that begins with Bearer
). Appkit extracts the JWT from the header and stores the JWT so that subsequent requests can use the JWT to authorize the requests to Fusion.
The JWT support added in Release 4.5.0 is in addition to the support that was present in prior Appkit releases for pre-authentication with the Fusion security provider.
Now, instead of just checking for a fusion-user-name
header in the incoming request, Appkit also checks for a JWT header, if it does not find the fusion-user-name
header.
If a JWT is present, Appkit uses the token to authenticate the user. This is typically used when an application (e.g. App Insights) is running behind a Fusion proxy.
After Appkit retrieves and stores the JWT, Appkit can retrieve the JWT to authorize requests to Fusion. By default, Appkit, handles all of this for you.
auth: auto | serviceaccount | jwt | native
property to the app’s Fusion services resources under resources/services/api/fusion.conf
. The default value of this property is native
, which means that Appkit uses the pre-authentication provided by the Fusion security provider.
If you use the auto
value of the auth
property, then Appkit works its way through serviceaccount
, jwt
, and finally native
. With the serviceaccount
option, Appkit tries to find a userName
and password
in resources/services/api/fusion.conf
. With the jwt
option, Appkit tries to generate a JWT for the user. (This is not the same as the JWT passthrough.)
<search:facet-list>
request with multiple hierarchical facets would sometimes return a flattened structure (parent only) for some of the facets.
dateFormat
filter now applies the timezone
parameter correctly to both date-time values in a date-time range.
<query:suggestions>
element now includes responses from all suggesters in their respective sections. Previously, only the responses of one suggester were included.