From 8de4ec83815a24a910e2ba9e6ee73152d196c3ff Mon Sep 17 00:00:00 2001 From: mone Date: Fri, 10 Oct 2014 19:46:55 +0200 Subject: [PATCH] continuing the readme --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++-- sequence_diagram.png | Bin 0 -> 43805 bytes 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 sequence_diagram.png diff --git a/README.md b/README.md index 2c7c22a..ba5630d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,72 @@ # Lightstreamer - Authentication and Authorization Demo - Java Adapter -TODO +The Lightstreamer Authentication and Authorization Demo is a simple example illustrating authentication and authorization mechanisms when an external +Web/Application Server is involved in the process. + +This project includes a simple MetadataProvider implementation that includes user validation and items authorization logics. + + +##Details + +This *Authentication and Authorization Demo* illustrates the typical best practice used for Lightstreamer Web applications, when a Web/Application server is involved in the process. +The actual authentication is usually handled by the legacy Web/Application server, irrespective of Lightstreamer. +Some sort of token is sent back to the Client through cookies, response payload or any other technique. +When the Web Client creates the Lightstreamer session, instead of sending again the full credentials (usually involving a password) to +Lightstreamer Server, it sends just the username and the token. +The Metadata Adapter is passed this information and validates the token against the Web/Application Server that +generated it (or a database or whatever back-end system). + +Here an overview of the whole sequence: + +![sequence diagram](sequence_diagram.png) + +In this demo client the Web/Application server is not actually involved and calls to placeholder methods are performed to validate the token. + +from `src/authmetadata_demo/adapters/AuthMetadataAdapter.java`: +```java +[...] + +if (!AuthorizationRequest.isValidToken(user, token)) { + throw new AccessException("Invalid user/token"); +} + +[...] +``` + +This demo also implements Authorization handling of item subscription requests. +Every time a subscription is issued, the adapter verifies if the user issuing the request is actually authorized to subscribe to the selected item(s). +Again, a real case might query an external service to know the various authroizations, while this demo example simply checks on an hard-coded list + +from `src/authmetadata_demo/adapters/AuthMetadataAdapter.java`: +```java +[...] + +if (!AuthorizationRequest.canUserSeeItems(user, items)) { + throw new CreditsException(-1, "User not authorized", "You are not authorized to see this item"); +} +[...] +``` + +Querying an external service at subscription time is a discouraged approach. If the authorizations are actually placed on an external service, +it is suggested to use the approach shown in the AuthMetadataAdapterWithAuthCache class. + +More details and comments on how the auth/auth cycle is accomplished is available in the source code of the application. + +##Deploy + +To have something to show to the user (i.e.: items to be subscribed), this demo relies on the the QUOTE_ADAPTER, from the Stock-List Demo +(see [Lightstreamer - Stock-List Demo - Java Adapter](https://github.com/Weswit/Lightstreamer-example-StockList-adapter-java) ). + +* Download Lightstreamer Server (Lightstreamer Server comes with a free non-expiring demo license for 20 connected users) from Lightstreamer Download page, and install it, as explained in the GETTING_STARTED.TXT file in the installation home directory. +Make sure that Lightstreamer Server is not running. +* Get the deploy.zip file, from the releases of this project, unzip it, go to the Deployment_LS folder and copy the AuthDemo folder into the adapters +folder of your Lightstreamer Server installation. +* Launch Lightstreamer Server. + +##Build + +TODO ### The Adapter Set Configuration @@ -34,4 +99,10 @@ The `adapters.xml` file for the *Authentication and Authorization Demo*, should -``` \ No newline at end of file +``` + + + +### Related Projects + +* [Lightstreamer - Reusable Metadata Adapters - Java Adapter](https://github.com/Weswit/Lightstreamer-example-ReusableMetadata-adapter-java) \ No newline at end of file diff --git a/sequence_diagram.png b/sequence_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d62997a3c253094f7f4514ea5924a3bca94188d4 GIT binary patch literal 43805 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

_jEUW7$A`d%pt^~IUJ5cXgS|gz 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

qvD2DS&M-(*;Un<+B*<_!vXN}V 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 literal 0 HcmV?d00001