Definitely useful, thanks for this!

Wes Hargrove
Sales and Technical Engineering Support
lynda.com
Office +1 (805) 755-1437
Mobile +1 (903) 780-1871
whargr...@lynda.com


On Thu, Aug 15, 2013 at 10:12 PM, Robert Oschwald <
robertoschw...@googlemail.com> wrote:

> +1
>
> Am 13.08.2013 um 23:47 schrieb "Ohsie, David" <david.oh...@emc.com>:
>
> Whenever I try to explain how CAS works to colleagues in EMC, generally or
> in specific use cases, I present sequence diagrams.  In the past, I’ve
> drawn these using Visio, which makes nice-looking diagrams, but the result
> is tedious to maintain and also hard to share or integrating into a build
> process.  Recently, I started to experiment with text->UML tools and I drew
> this diagram using plantUML (http://plantuml.sourceforge.net/).  Starting
> from text, means that you can keep this documentation easily in git, and
> you can use maven or many other processes to generate the docs
> automatically (much like you do with Markdown).   I wondering if the
> developers feel that these diagrams would be useful to include with the
> documentation.    I’m attaching a link, the original “source” and the
> resulting picture.  (the link is really long; I think that it is a lossless
> compression of the plantuml source).  I’m thinking a proxy ticketing
> diagram might also be useful:****
>
> ** **
>
> Ridiculously long link:****
>
> ** **
>
>
> http://www.plantuml.com:80/plantuml/img/jLPjJ-D64Fvi_ufHgciFYOJhqZT5X5CIZlGgA15sgclB2Mti3Td3yRgxwr3-VMVN6ySEpij9L4A0xTdPcMUUcMU-KuyyXK6IisiHCvdwlkOwOLqOzWCOIF6ac8I0fmy9QmVy8HKf1EoVdAKHWmjE7oHT-3wDj92G6rEgOE9dL6eUyOoc6bhEISjy6jG_cJi29fVkwx3-TIo5Pf5cCVIpp1gCTnZ0DwIm8RxlztfmoQNIq8yYfXJqUhu_WVOv3A0x4bf0Yw9BlnzflgIQOLm3ytKCNHXz266kTQQw9oTer67_qaMMi4ua5YScqUB060-SjTlsnEax0bSYefgBj5kUZQYgdSNdaqGyyFJzNOfmB7d4UcVyt9g_EUs_8PVuit4XlZaxuUT-Ydc2v0zpxNik8wuWJsckvon5GAW1GGdmlPcGJrJ6W3aQTF4HAbOOOSVtMkx-5c0XvJCWg7J1D9E-jpLp3o-St5u15Xvv4liiZS64vNcU7xCABWMImpgGhma6NHUj_7VekteC2-9U6TzmAUIYXjt4C3GMJ9dGOKwN32ZoERX15Yg5u1GOPf8f10niX0R2HPbkDTSXKkgi3OCkDeBA4lfihhvBAtUNfXF3FaE_BWJvTC7r2zEAtqa9uVWc2FztGfcsJR7-nyW3fPw4Z8yHbTXbZxHvP6X59RFX8C_Cspc3gOYVQpIe03Dq2VGh1BNpOLscWEdsK8X7NioQS3JiXQEmJKv_-F6ddt-vIvkxQfENc7iHOIy8sz-xmozhZkHzqIkHP2OgDzjKCTlU8XcEG1LiyBqYC8XidFWdrPIdogOVscjX974KeOlLyrjCuiZtGcCn2it5njWvX4VsR5lIl3DmA4k-rNND9Aiy35ntZNUFgVSDa5GwT7n0Wpf2_K4J7kEfhwFOjqr5US6xzVH63x1qDoah27WHOkWG3S8ZeBPZG5cn065-sIZMc5KG6wyuHjwzWxy_NL_142k7nVzS192mcRQr1SbqBh6WE0MCMIoYV64w_sdEepaIFKhoc2baVueFiPkW86QWSZk6ZsqbwzJoFPLFls1cHHk9p9oXIVACIMZ9fpackQNKJbFgpV5Ry248Fjxy_l6YrnyC7Po7zaSDSVHQOwEZjObo9Hk-PrlRwVwKHez6IMoIMPQi07ZYUkvC7ItSd0256MOPeY1cCzC5oFyL0FYDPO2pTObO5MsnkWS1ZcDfP6rA9SoaM41SZ5JJMSOo21iX6vVzi1EjWqLzxBojUBy1rRf0bbcELOOFsvn_haSxiUShYb7i8VKMxtGwTeC960wSUBN2X082dD9crIdhODUQGbPkpLA62m-YA78PiQfCbhlD7ahjGgdqMoTKWKxXrmmxevjOpKHWtInBJF5a4LkpM1mCEiRVih3Vkb3AhcurWWnhbClWcu6khOe6PmVy9jAR2oHfs239onMIRACRMQL6NdsB94sgNqM9h1UrNIhy6aiSENoBM-qD9HKmcFNAq3ZkoFPze64RC4D_BJNQgJHk0wbm2m-IsF2LoygIkr-GoPwgxvPauYC5NbkKoS6gN9LEibqxcwIArBNg-kRYlZy9Vxr7dE-3tgS__zglLnljKITfYUxU6xwYwyQaVMvyxXauPEUO9plcF6aUz6HZqly7
> ****
>
> ** **
>
> Image (source comes after the image):****
>
> ** **
>
> <image001.png>****
>
> ** **
>
> @startuml****
>
> ** **
>
> 'skin BlueModern****
>
> ** **
>
> title: CAS Browser Single-Signon Sequence Diagram****
>
> ** **
>
> actor user as U****
>
> participant "Browser" as B****
>
> participant "CAS Server" as C****
>
> participant "Protected App" as P****
>
> participant "Protected App #2" as P2****
>
> ** **
>
> ** **
>
> == First Access ==****
>
> ** **
>
> U -> B :Goto "app"****
>
> Activate B****
>
> B -> P : GET https://app.example.com/****
>
> activate P****
>
> B <-- P : 302 Location:
> https://cas.example.com/cas/login?\nservice=<i>https%3A%2F%2Fapp.example.com%2F</i><https://cas.example.com/cas/login?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp.example.com%2F%3C/i%3E>
> ****
>
> note right****
>
>                 Access is unauthenticated so ****
>
>                 forward to CAS for authentication.****
>
>                 "service" query parameter****
>
>                 https://app.example.com/****
>
>                 is URL encoded****
>
> end note                                             ****
>
> deactivate P****
>
> ** **
>
> B -> C: GET
> https://cas.example.com/cas/login?\nservice=<i>https%3A%2F%2Fapp.example.com%2F</i><https://cas.example.com/cas/login?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp.example.com%2F%3C/i%3E>
> ****
>
> activate B****
>
> activate C****
>
> ** **
>
> B <-- C: CAS Login Form****
>
> note right****
>
>                 User does not have an SSO Session so ****
>
>                 present login form****
>
> end note****
>
> deactivate C****
>
> U <- B: Display CAS\nLogin Form****
>
> activate U****
>
> U --> B: Submit CAS\nLogin Form****
>
> deactivate U****
>
> B -> C: POST
> https://cas.example.com/cas/login?\nservice=<i>https%3A%2F%2Fapp.example.com%2F</i><https://cas.example.com/cas/login?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp.example.com%2F%3C/i%3E>
> ****
>
> note right****
>
>                 username, password, and login ticket****
>
>                 are POSTed in the body****
>
> end note                                             ****
>
> activate C****
>
> C -> C: Authenticate user****
>
> B <-- C: Set-Cookie: CASTGC=TGT-2345678\n302 Location:
> https://app.example.com/?\nticket=ST-12345678****
>
> note right****
>
>                 User is authenticated so create Single-signon (SSO) session
> ****
>
>                 CASTGC cookie contains the Ticket Granting Ticket (TGT)***
> *
>
>                 The TGT is the session key for the users SSO session****
>
> end note****
>
> deactivate C****
>
> deactivate B****
>
> ** **
>
> B -> P: GET https://app.example.com/?ticket=ST-12345678****
>
> activate P****
>
> P -> C: GET
> https://cas.example.com/serviceValidate?\nservice=<i>https%3A%2F%2Fapp.example.com%2F&\nticket=ST-12345678</i><https://cas.example.com/serviceValidate?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp.example.com%2F&%5Cnticket=ST-12345678%3C/i%3E>
> ****
>
> note right****
>
>                 Protected app validates Service****
>
>                 Ticket (ST) at CAS server over https****
>
> end note****
>
> activate C****
>
> P <-- C: 200 [XML Content]****
>
> note left****
>
>                 CAS returns an XML document which includes****
>
>                 an indication of success, the authenticated ****
>
>                 subject, and optionally attributes****
>
> end note****
>
> deactivate C****
>
> B <-- P: Set-Cookie: JSESSIONID=ABC1234567\n302 Location:
> https://app.example.com/****
>
> note right****
>
>                 Set the session cookie and forward ****
>
>                 the browser back to the application with ****
>
>                 the service ticket stripped off****
>
>                 This optional step prevents the browser ****
>
>                 address bar from displaying the ST****
>
> end note****
>
> deactivate P****
>
> B -> P: Cookie: JSESSIONID=ABC1234567 GET https://app.example.com/****
>
> activate P****
>
> P -> P: Validate session cookie****
>
> B <-- P: 200 [Content of https://app.example.com/]****
>
> deactivate P****
>
> U <-- B: Display "app"****
>
> deactivate B****
>
> ** **
>
> ...****
>
> ** **
>
> == Second Access To Same Application ==****
>
> ** **
>
> U-> B: Request resource****
>
> activate B****
>
> B -> P : Cookie: JSESSIONID=ABC1234567\nGET
> https://app.example.com/resource****
>
> note right****
>
>                 Session Cookie is sent****
>
>                 along with the request****
>
> end note                                             ****
>
> activate P****
>
> P -> P: Validate session cookie****
>
> B <-- P : "200 [Resource Content]"****
>
> deactivate P****
>
> U <-- B : Display resource****
>
> deactivate B****
>
> ** **
>
> ...****
>
> ** **
>
> == First Access To Second Application ==****
>
> ** **
>
> U -> B :Goto "app2"****
>
> Activate B****
>
> B -> P2 : GET https://app2.example.com/****
>
> activate P2****
>
> B <-- P2 : 302 Location:
> https://cas.example.com/cas/login?\nservice=<i>https%3A%2F%2Fapp2.example.com%2F</i><https://cas.example.com/cas/login?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp2.example.com%2F%3C/i%3E>
> ****
>
> deactivate P2****
>
> ** **
>
> B -> C: Cookie: CASTGC=TGT-2345678\nGET
> https://cas.example.com/cas/login?\nservice=<i>https%3A%2F%2Fapp2.example.com%2F</i><https://cas.example.com/cas/login?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp2.example.com%2F%3C/i%3E>
> ****
>
> activate B****
>
> activate C****
>
> C -> C: Validate TGT****
>
> B <-- C: Location: https://app2.example.com/?\nticket=ST-345678****
>
> note right****
>
>                 CAS validates the TGT so no login is required****
>
> end note****
>
> deactivate C****
>
> deactivate B****
>
> ** **
>
> B -> P2: GET https://app2.example.com/?ticket=ST-12345678****
>
> activate P2****
>
> P2 -> C: GET
> https://cas.example.com/serviceValidate?\nservice=<i>https%3A%2F%2Fapp2.example.com%2F&\nticket=ST-12345678</i><https://cas.example.com/serviceValidate?%5Cnservice=%3Ci%3Ehttps%3A%2F%2Fapp2.example.com%2F&%5Cnticket=ST-12345678%3C/i%3E>
> ****
>
> activate C****
>
> P2 <-- C: 200 [XML Content]****
>
> deactivate C****
>
> B <-- P2: Set-Cookie: MOD_AUTH_CAS_S=XYZ1234567\n302 Location:
> https://app2.example.com/****
>
> deactivate P2****
>
> B -> P2: Cookie: MOD_AUTH_CAS_S=XYZ1234567 GET https://app2.example.com/**
> **
>
> activate P2****
>
> P2->P2: Validate session cookie****
>
> B <-- P2: 200 [Content of https://app2.example.com/]****
>
> deactivate P2****
>
> U <-- B: Display "app2"****
>
> deactivate B****
>
> ** **
>
> @enduml****
>
> ** **
>
> ** **
>
> ** **
>
> --
> You are currently subscribed to cas-dev@lists.jasig.org as: 
> robertoschw...@googlemail.com
>
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-dev
>
>  --
> You are currently subscribed to cas-dev@lists.jasig.org as: 
> whargr...@lynda.com
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-dev
>
>

-- 
You are currently subscribed to cas-dev@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev

Reply via email to