Commit Graph

5807 Commits

Author SHA1 Message Date
Stephen Compall
ac8cffd98f
document name mangling from DAML to DAML-LF (#7976)
CHANGELOG_BEGIN
CHANGELOG_END
2020-11-17 09:20:14 -05:00
Samir Talwar
7013c1619f
sandbox: When testing the reset service, wait for the ledger config. (#7975)
* Suppress debug and trace logging for Sandbox tests.

* participant-integration-api: Don't submit config after shutting down.

* sandbox: When testing the reset service, wait for the ledger config.

If we don't wait for the ledger configuration, we could potentially ask
for completions before the server is fully ready.

* sandbox-common: Reduce the number of reset attempts in testing.

Now we're also checking for ledger configuration, the time for a reset
to be "accepted" is longer, so 5 tries in 30 seconds is a bit flaky.
Reducing to 4 seems reasonable.

* sandbox: Stop marking the reset service tests as flaky.

I don't have conclusive proof that they're no longer flaky, but I'm
fairly confident. We can revert this commit if they turn out to still
need some attention.

CHANGELOG_BEGIN
CHANGELOG_END

* sandbox-common: Check the configuration shows up in reset service tests.

* sandbox-common: Factor out logback-test.xml.
2020-11-17 13:28:44 +00:00
Andreas Herrmann
14f71ed20c
Split trigger service tests into a test suite (#7983)
This is to reduce the likelyhood of these tests timint out. Bazel will
generate a dedicated test target per `.scala` file. Meaning the tests
can run in parallel and each test target should have a shorter overall
runtime.

changelog_begin
changelog_end

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
2020-11-17 13:14:24 +00:00
Andreas Herrmann
90dc3a5669
Implement token refresh in auth middleware (#7981)
* Obtain refresh token from Auth0

Auth0 requires the `offline_access` scope to be set to return a refresh
token.

See https://auth0.com/docs/tokens/refresh-tokens/get-refresh-tokens

Additionally, the `audience` claim needs to be set to obtain a JWT
access token and a refresh token.

See https://auth0.com/docs/tokens/refresh-tokens

changelog_begin
changelog_end

* Implement refresh endpoint on auth middleware

Following the refresh spec [1] and Auth0 documentation [2].

[1]: https://tools.ietf.org/html/rfc6749#section-6
[2]: https://auth0.com/docs/tokens/refresh-tokens/use-refresh-tokens

* Adapt Auth0 example configuration

Ignore any requests outside the ledger-api audience.

Don't throw on missing query fields. Otherwise the unhandled exception
would prevent unrelated requests from succeeding. E.g. token refresh
requests would always fail.

* Forward unauthorized/forbidden response on refresh

* re-use precomputed token payload

* Implement token refresh in auth test server

Reuses the association between authorization code and token payload to
associate refresh tokens and token payload.

Adds an expiry to the generated token to make tokens distinguishable
across refresh.

* obtain refresh token in test client

* Test auth server refresh token

* auth test server clock configurable

The clock used to define token expiry is configurable

* Override default clock in test fixture

* implement an adjustable clock

* Test token refresh with adjustable clock

* Test token expiry on /auth backend

* Test case for auth middleware /refresh endpoint

* handle malformed code/refresh token in auth server

* Forward client errors on middleware refresh

* Test middleware refresh failure

* Clarify meaning of offline accesss

* Remove redundant testing only comment

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
2020-11-17 12:06:42 +00:00
fabiotudone-da
983a937cf5
[KV integrity check] Fix: use the configured jdbc URL when indexing (#7982)
* Use configured jdbc URL when indexing

CHANGELOG_BEGIN
CHANGELOG_END

* Wording

* Tidy up
2020-11-17 12:38:10 +01:00
Robin Krom
5bfff4e9ba
sandbox: fail on already existing port-file. (#7929)
Fixes #7806. This aligns the port file behaviour of the sandbox with the
HTTP JSON API.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-17 11:08:37 +01:00
nickchapman-da
9bf4ef9ba6
update instructions for working with ghc-lib (#7958)
changelog_begin
changelog_end

typos

undo change to old instructions

test & fix new instructions

remove old instructions

rename new instructions

copyright at top

remove update date from text

tee when running example

instruct to make initial build
2020-11-17 10:02:19 +00:00
Moritz Kiefer
10792ed6fd
Make application ID configurable in trigger service (#7974)
* Make application ID configurable in trigger service

fixes #7671

changelog_begin

- [Trigger Service] The application id used by a trigger can now be
  configured by an optional `applicationId` in the start request.

changelog_end

* Update triggers/service/src/main/scala/com/digitalasset/daml/lf/engine/trigger/Server.scala

Co-authored-by: Andreas Herrmann <42969706+aherrmann-da@users.noreply.github.com>

Co-authored-by: Andreas Herrmann <42969706+aherrmann-da@users.noreply.github.com>
2020-11-17 10:25:30 +01:00
fabiotudone-da
fdddb56b72
[KV integrity checker] Remove extra stateUpdates.compare() (#7977)
* Remove extra stateUpdates.compare()

CHANGELOG_BEGIN
CHANGELOG_END

* Add test
2020-11-17 10:23:54 +01:00
Moritz Kiefer
45ba167aac
Dedup parties in JwtPayload (#7973)
Previously we didn’t build up the `OneAnd[Set, Party]` properly and
included the one party in the set as well. This was an issue if you
have the same party multiple times, most likely in readAs and
actAs (but not limited to that). This then lead to SQL queries failing
since we tried to insert twice for a given party. This PR fixes that
by properly deduplicating the parties and adding a test for this.

changelog_begin

- [JSON API] Fix a regression introduced in SDK 1.7.0, where using a
  party multiple times in the same JWT token (e.g., readAs and actAs)
  broke database queries for that party. Note that there is never a
  reason to include a party multiple times since actAs implies readAs.

changelog_end
2020-11-16 19:28:11 +01:00
nickchapman-da
cdcfd379f0
When computing blinding info, divulge to choice-observers. (#7970)
changelog_begin
changelog_end
2020-11-16 16:35:31 +00:00
fabiotudone-da
9d16858085
Avoid executor re-entry for parties validation by using PostCommitValidationData (#7972)
CHANGELOG_BEGIN
CHANGELOG_END
2020-11-16 16:57:49 +01:00
Sofia Faro
f7e096afc3
Make GHC recognise our ($) operator. (#7969)
* Make GHC recognise our ($) operator.

Fixes #4555 by moving ($) to GHC.Base and giving it a levity polymorphic
signature, as GHC expects. Added a regression test.

changelog_begin
changelog_end

* Update line numbers for debug...

* Fix `daml test-script` tests

changelog_begin
changelog_end

* fmt for the format gods

Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
2020-11-16 15:10:14 +00:00
fabiotudone-da
132015b4d8
[DAML on SQL] Validate party allocation [KVL-693] (#7941)
* [DAML on SQL] Disallow --implicit-party-allocation

CHANGELOG_BEGIN
- [DAML on SQL] Disallow --implicit-party-allocation
CHANGELOG_END

* Don't check for implicit party allocation cmdline as it is unsupported

* Remove --open-world and --exclude=ClosedWorldIT from tests

* Do not override `implicitPartyAllocation` in `SandboxServer`

* Validate party allocation in SqlLedger (PostCommitValidation)

* Validate party allocation only for DAML on SQL

* Fix build

* Name arguments in call to SandboxIndexAndWriteService.postgres

* Make validatePartyAllocation = false explicit in SqlLedgerSpec
2020-11-16 12:49:24 +01:00
Moritz Kiefer
d8bbd2e8bd
Cleanup trigger message types (#7964)
* Cleanup trigger message types

This properly separates the messages accepted by the internal
TriggerRunnerImpl from the ones accepted by TriggerRunner. This also
shows a bug/redundancy where we had a bunch of code in
TriggerRunnerImpl to handle `Stop` but as evidenced by the types now,
we never actually send this message. We send it to TriggerRunner which
then tears down the child with it.

It also shuffles around the server message type to make it clear where
it belongs to.

And of course, I managed once again to include debugging output from a
previous PR so this is now removed as well 🤦

changelog_begin
changelog_end

* Update triggers/service/src/main/scala/com/digitalasset/daml/lf/engine/trigger/TriggerRunnerImpl.scala

Co-authored-by: Andreas Herrmann <42969706+aherrmann-da@users.noreply.github.com>

Co-authored-by: Andreas Herrmann <42969706+aherrmann-da@users.noreply.github.com>
2020-11-16 12:27:51 +01:00
Moritz Kiefer
b6e04c4fee
Fix protobuf decoding in trigger service (#7967)
We need to go via the methods in Reader to make sure that we get our
increased protobuf recursion limit. Otherwise, we fail when trying to
read from the database on anything non-trivial. I’ve verified that the
definition I’ve added is sufficient to break the default limit.

changelog_begin

- [Trigger Service] Fix a bug where complex models resulted in a fatal
  error when restoring the state from the database due to an incorrect
  protobuf recursion limit.

changelog_end
2020-11-16 12:16:03 +01:00
Moritz Kiefer
dbf28e0794
Revamp trigger status endpoint (#7961)
* Revamp trigger status endpoint

fixes #7951

The previous endpoint was a memory leak, nothing got persisted across
restarts and it omitted useful information like the metadata of the
trigger. The information is useful for testing, so I abstracted over
it so we can do what we did before in testing.

As for the endpoint, it now queries the actor for its current status
and only returns that and includes the metadata in the response.

As mentioned in #7951, I do think there is value in some kind of
history and potentially something including trace statements but I’d
like to do that properly instead of the hacky thing we have atm.

changelog_begin

- [Trigger Service] The trigger status endpoint /v1/triggers/:id now
  includes metadata about the trigger like the party and the trigger
  id. The logs field has been replaced by a status field.

changelog_end

* Fix ACS query test

changelog_begin
changelog_end
2020-11-13 15:59:34 +01:00
Richard Kapolnai
ea44ddec4c
fix backtick rendering errors in docs (#7962)
CHANGELOG_BEGIN
CHANGELOG_END
2020-11-13 15:08:20 +01:00
Remy
6700400760
LF: Update DAML-LF Governance process (#7926)
CHANGELOG_BEGIN
CHANGELOG_END
2020-11-13 15:03:54 +01:00
Robert Autenrieth
0cf27e3b00
Prepare participant state API for multi-party submissions [KVL-701] (#7960)
* Prepare participant state API for multi-party submissions

CHANGELOG_BEGIN
CHANGELOG_END

* Use new multi-party SubmitterInfo

* fmt

* Helper function for printing lists of parties
2020-11-13 14:42:34 +01:00
Remy
5ca5cc7e98
LF: few more tests for pattern matching exhaustiveness (#7959)
This follows late requests made by Martin in #7936.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-13 13:03:36 +00:00
Remy
c093e094cb
LF: Check DAML-LF pattern matches for exhaustiveness (#7936)
This reproduces changes made to the Haskell type checker (in #7892) in
the Scala type checker.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-13 10:47:11 +01:00
Remy
732c1ac792
LF: Make node validation taking into account version (#7947)
We introduce in #7835 VersionedNode which associate to each node a
version. In this PR, we update Transaction validation to take into
account this version when comparing nodes.

This advances the state of #7788

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-13 10:46:29 +01:00
Moritz Kiefer
1dcfca11d7
Include listKnownParties in DAML Script docs (#7955)
* Include listKnownParties in DAML Script docs

Ratko pointed out that this can often be useful in demo scenarios so
we might as well include it while documenting the caveats. I’ve also
added some subheadings since this got a bit out of hand.

changelog_begin
changelog_end

* Fix tests

changelog_begin
changelog_end
2020-11-13 07:43:56 +00:00
Robin Krom
dae3c5caef
daml ledger: add a max-inbound-message-size flag for grpc (#7954)
* daml ledger: add a max-inbound-message-size flag for grpc

This new flag allows to set the maximal accepted inbound message size
when using gRPC to interact with a legger.

CHANGELOG_BEGIN
CHANGELOG_END

* added a test
2020-11-13 00:16:06 +00:00
Sofia Faro
f7ba14a4c4
Allow for lets before letrec transformation. (#7956)
* Allow for lets before letrec transformation.

Fixes #7953 by adjusting the letrec transformation to handle
(optional) nonrecursive lets before the letrec binding, and adds
a regression test.

changelog_begin
changelog_end

* typo

* apply martin suggestions
2020-11-12 23:25:39 +00:00
Andreas Herrmann
1964920ae1
Trigger auth failure (#7952)
* Factor out oauth2 test server body into a class

changelog_begin
changelog_end

* move start into class

* mutable authorized parties

* add function sfor party authorization

* manage party authorization in trigger fixture

* enable deleting cookies

* Add access denied test cases

* Track readAs and actAs claims

* Enable ignored auth tests

* fmt

* add method comments

* Update triggers/service/auth/src/main/scala/com/daml/oauth/server/Server.scala

Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>

* Update triggers/service/auth/src/main/scala/com/daml/oauth/server/Server.scala

Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>

* Explain party authorization modes

* inline expected status codes

* fix closing brace

* use shouldBe instead of should equal

* Use shouldBe instead of should equal

* Explain revoking access and deleting cookies

* foreach requires a total function

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
2020-11-12 23:09:30 +00:00
Remy
57bc2c95c1
LF: check for ill-formed kinds in scala type checker. (#7949)
Following what have been done in #7944, we add a check in the Scala
version of the LF type checker that rejects invalid kinds (i.e. kinds
of the form k -> Nat).

This PR does the "Scala side" of #7917.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-12 13:52:56 +01:00
Sofia Faro
0057016519
Require pattern matching exhaustiveness in the LF spec. (#7946)
* Require pattern match exhaustiveness in spec.

Changes the rules for case expressions to require exhaustiveness.
This involves moving out the "well-formed case alternative" rules
to a separate judgement, and introducing a "pattern match
exhaustiveness" judgement.

The symbol ⊲ used for pattern match exhaustiveness comes from
sheaf theory and formal topology, where "A ⊲ B₁, …, Bₙ" means
"A is covered by { B₁, …, Bₙ }", indicating an exhaustive
coverage of A by possibly overlapping conditions B₁, …, Bₙ.
For example, see [this nlab page](https://ncatlab.org/nlab/show/posite).

It seemed appropriate.

changelog_begin
changelog_end

* rst syntax

* fix ExhaustVariant and some weird other syntax

* review comments
2020-11-12 11:47:55 +00:00
Gary Verhaegen
4b191f8154
@daml/types: add encoders (#7801)
This PR adds encoders to the various types defined in `@daml/types`. The
serde mechanism did not need one so far because all of the types we're
currently exposing map one-to-one to an appropriate (or, I suppose,
tolerable) JS equivalent. This will not be the case anymore with generic
maps, which means that if we want to provide our users with decent types
(I do), we'll need some real encoding/decoding moving forward.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-12 12:00:38 +01:00
azure-pipelines[bot]
abd61b7429
update compat versions for 1.7.0 (#7943)
CHANGELOG_BEGIN
CHANGELOG_END

Co-authored-by: Azure Pipelines DAML Build <support@digitalasset.com>
2020-11-12 11:57:56 +01:00
Moritz Kiefer
07d5a19d50
Cleanup trigger service endpoints (#7950)
* Cleanup trigger service endpoints

fixes #6333

changelog_begin

- [Trigger Service]

  Endpoints have been rearranged to be more consistent:

  | New endpoint              | Old endpoint       | Functionality                |
  |---------------------------|--------------------|------------------------------|
  | GET `/v1/triggers`        | `/v1/list`         | List triggers                |
  | POST `/v1/triggers`       | `/v1/start`        | Start trigger                |
  | GET `/v1/triggers/:id`    | `/v1/status/:id`   | Trigger status               |
  | DELETE `/v1/triggers/:id` | `/v1/triggers/:id` | Stop/delete trigger          |
  | POST `/v1/packages`       | `/v1/upload_dar`   | Upload DAR                   |
  | GET `/livez`              | `/v1/health`       | liveness check               |

changelog_end

* Fix integration tests

changelog_begin
changelog_end
2020-11-12 11:23:28 +01:00
tudor-da
02f207b55e
Participant Indexer pipelined parallelization (#7923)
* Pipelined parallelization for Participant Indexer (#7923)

* Extract transactionWriter.prepare into its own Akka operator

CHANGELOG_BEGIN
[Integration Kit] Pipelining in the indexing process improves throughput by up to 15%
CHANGELOG_END

* Address review comments
2020-11-12 07:29:31 +01:00
Martin Huschenbett
b926c6f061
damlc: Tiny improvement to DAML-LF type checker (#7948)
I suppose there's not much to say.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-11 15:41:15 +00:00
fabiotudone-da
e9b0955b72
[DAML on SQL] Support passing the JDBC URL through an environment variable via --sql-backend-jdbcurl-env (#7940)
* Support --sql-backend-jdbcurl-env

CHANGELOG_BEGIN
- [DAML on SQL] Support passing the PostgreSQL JDBC URL through an environment variable via `--sql-backend-jdbcurl-env`
CHANGELOG_END

* Fix cleanup logic

* Improve cmdline help

* Check that the environment variable is defined
2020-11-11 16:15:08 +01:00
Sofia Faro
5d86abce55
Avoid generating ill-formed kinds in DAML compiler (#7944)
* Perform kind-checking in DAML compiler.

This PR avoids generating invalid kinds (i.e. kinds of the form k ->
Nat) during LF conversion, and adds a small "kind checking" step
whenever a type variable is introduced in the LF typechecker (since the
only way to get invalid kinds is to introduce them in a `forall`).

Right now there's no way to test that both the typechecker & the
conversion raise an error here, and in general, we try to always push
our LF type errors into GHC type errors or LF conversion errors. This
is something we can work on (adding actual LF typechecker tests). But
also, I verified manually that the type checker raises the error, in
the absence of the changes to LF conversion.

Ok, last point: The test case here has a weird location, but I tried and
couldn't figure out how to get a better location. I think this is a
general problem with the GHC Core representation?

changelog_begin
changelog_end

* Add more kind checks and restrict test version.

* fix test again
2020-11-11 14:43:20 +00:00
Robin Krom
c852a42455
docs: update the insaller instructions for PATH (#7933)
The PATH variable is now set automatically by the Mac OS/Linux
installers.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-11 13:24:09 +01:00
Remy
51d134f925
LF: fix complexity of TransactionBuilder#addNode (#7930)
Fix issue with slowSnoc underlines by Martin in #7835

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-11 12:57:59 +01:00
azure-pipelines[bot]
942448112e
rotate release duty after 1.7.0-snapshot.20201110.5615.0.b35c9fcb (#7938)
@SamirTalwar-DA is taking care of 1.7.0-snapshot.20201110.5615.0.b35c9fcb (#7937), so they get pushed back to the end of the line.

Please do not merge this before #7937.

CHANGELOG_BEGIN
CHANGELOG_END

Co-authored-by: Azure Pipelines DAML Build <support@digitalasset.com>
2020-11-11 12:13:45 +01:00
Moritz Kiefer
328c5ae923
Release SDK 1.7.0 (#7939)
changelog_begin
changelog_end
2020-11-11 09:26:41 +00:00
azure-pipelines[bot]
b98f5e1607
release 1.8.0-snapshot.20201110.5615.0.b35c9fcb (#7937)
Co-authored-by: Azure Pipelines DAML Build <support@digitalasset.com>
Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>
2020-11-11 09:47:00 +01:00
Samir Talwar
d3b5f30a70
Delete the Docker image targets. (#7932)
We don't use them, and we definitely don't want to support them.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-11 07:40:06 +00:00
Stephen Compall
b35c9fcb3d
slow down trigger on RESOURCE_EXHAUSTED failures (#7820)
* restate the submit stage as a Flow and derived Sink

* take submit out of the trigger-to-submit flow

* type for the failures produced directly by command submission

* directly connect the msgSource failure queue to the submitter output

* parens

* slow down submission as we exceed max parallel submissions

* restricting alterF so it will be usable with ConcurrentMap

* disable buffer for the delay

* split out the delay function

* drafting a retry loop

* degenerate test for retry loop, factoring the forAllFuture utility

* map input to retrying properly

* make retrying accessible to tests

* test happy path and fix off-by-one

* further tests for retrying

* reveal that elements can get lost

* more determinism in test

* let failures block further elements from being attempted

- Previously failures would go into a separate queue, where they awaited expiry
  of their delay and further initial upstream elements were given their first
  tries.  However, closing the upstream could mean that queue was dropped, and
  detecting that situation is not trivial.  So, instead, we don't use a separate
  queue.

* plug retrying into the trigger submission flow

* no changelog

CHANGELOG_BEGIN
CHANGELOG_END

* remove throttle; pendingCommandIds may leak

* report random parameter on failure

* revert comment about throttling

* explanation for fail in the error queue

- suggested by @cocreature; thanks
2020-11-10 21:36:48 +00:00
Sofia Faro
62cd53d402
Add a warning for GHC.Types.Symbol (#7921)
* Add a warning for GHC.Types.Symbol

CHANGELOG_BEGIN

- [DAML Compiler] Added a warning for references to
  the GHC.Types.Symbol kind since these cannot be
  preserved across data-dependencies.

CHANGELOG_END

* lint

* Address review comments

* fix LFNameCollisions test

* improve LFNameCollisions fix
2020-11-10 18:16:14 +00:00
Oliver Seeliger
401ab5a496
Upgrade ledger-api-test-tool-on-canton to the canton 0.19.0 release (#7931)
* Upgrade ledger-api-test-tool-on-canton to the canton 0.19.0 release

- Reflecting changes related to the Community edition of canton
- Testing full ContractKeysIT in a separate canton environment with
  unique contract keys. The ability to run multiple canton environments
  will come in handy when we introduce the participant pruning test suite.
- Slight canton configuration changes

CHANGELOG_BEGIN
CHANGELOG_END

* Formatting

* Review feedback by Samir

* Fixup
2020-11-10 18:09:58 +01:00
Robin Krom
f78d375fe4
damlc: fix: relative output path relative to cwd (#7927)
* damlc: fix: relative output path relative to cwd

This fixes #7913. Build output path were considered relative to the
project root instead of the current working directory.

CHANGELOG_BEGIN
CHANGELOG_END

* adding a test
2020-11-10 15:05:06 +01:00
Miklos
dad514ba6d
kvutils: Remove long unapplies for transaction Nodes (#7916) 2020-11-10 14:51:03 +01:00
Remy
a14035cea5
Drop plan to implement contract key. (#7924)
Remove file describing how contract key will be implement.  The file
is not usefull as contract key have been fully implemented. Futhermore
the file contains plenty of out of date information.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-10 12:41:41 +01:00
Remy
a8902a75db
LF: version transaction node independently (#7835)
This PR prepares the change of inference algorithm described #7788
where each node is version independently. This PR associates to each
node of `VersionedTransaction` a version. In the current state, all
nodes are associated to the version of the transaction itself. The
inference algorithm (that will make those versions potentially
distinct) will be implemented in an upcoming PR.

CHANGELOG_BEGIN
CHANGELOG_END
2020-11-10 12:12:16 +01:00
Andreas Herrmann
70d7c97e7f
Handle authorization failure in the auth middleware and trigger service (#7920)
* oauth error response

* oauth server parties parameter

* implement request denial in oauth test server

* Test oauth test server for access denied

* test unauthorized party on auth middleware

* Handle OAuth2 login flow error response in auth middleware

* Forward login error to auth middleware client

* fmt

* fix server test

* fmt

* Handle login failure in trigger service

* Test unauthorized trigger start

* Cleanup authCallback

* Update authentication specification

- The auth middleware accepts an arbitrary callback URI on /login
- The auth middleware will forward OAuth2 authorization failures to the
  client service.

changelog_begin
changelog_end

* Update triggers/service/authentication.md

Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
2020-11-10 09:27:21 +00:00