[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Link contract initiation flows
In this flow, Alice visits a web page at Acme for subscribing to an email newsletter. Alice clicks the Respect Connect button to share her selected email address from her personal cloud instead of manually filling out a form.
Alice gets Acme web page.
Alice clicks Respect Connect button containing Acme’s link contract request.
{$from}@acme+email$do/$get/{$from}{}{<+email>}&
(note that I used @acme in the above for readbility - it should actually be [@]!:uuid:x where x is the UUID]
Alice goes to Connect service.
Connect service requests Alice’s cloud name.
Alice provides her cloud name.
Connect service discovers Alice’s CSP endpoint.
Connect service redirects Alice to her CSP endpoint.
Alice’s CSP authenticates Alice.
Alice’s CSP processes the link contract request from Acme.
Alice’s CSP presents the confirmation to Alice.
Alice confirms.
Alice’s CSP sets the link contract to Alice’s XDI endpoint.
Alice’s XDI endpoint sets the link contract to Acme’s XDI endpoint.
Alice’s CSP redirects Alice to success page.
participant Alice
participant "Alice\nCSP" as AliceCSP
participant "Alice\nXDI Server" as AliceXDI
participant "Connect\nService" as Connect
participant "Discovery\nService" as Disco
participant "Acme\nXDI Server" as AcmeXDI
participant "Acme\nWebsite" as Acme
note left of "Alice": Alice has discovered Acme's web form
Alice->Acme: Get web form with Connect button
Acme-->Alice: Return web form
Alice->Alice: Click Connect button
Alice->Connect: Submit connect request
note right of Connect: Only if not logged in
Connect-->Alice: Return Connect form
Alice->Alice: Enter XDI address
Alice->Connect: Return Connect form
Connect->Disco: Discover Alice CSP endpoint
Disco->Connect: Return Alice CSP endpoint
Connect-->Alice: Redirect to CSP endpoint
Alice->AliceCSP: Submit connect request
note right of AliceCSP: Only if not logged in
AliceCSP-->Alice: AuthN challenge
Alice->AliceCSP: AuthN response
AliceCSP->AliceXDI: Submit XDI request
AliceXDI->AliceXDI: Process XDI request (run rules)
AliceXDI-->AliceCSP: Return XDI response
AliceCSP->AliceCSP: Process XDI response (generate form)
AliceCSP-->Alice: Return confirmation form
Alice->Alice: Select data & confirm link contract
Alice->AliceCSP: Submit confirmation form
AliceCSP->AliceXDI: $set Acme link contract
AliceXDI->Disco: Discover Acme XDI endpoint
Disco-->AliceXDI: Return Acme XDI endpoint
AliceXDI->AcmeXDI: $set Acme link contract
AcmeXDI-->AliceXDI: OK
AliceXDI-->AliceCSP: OK
AliceCSP-->Alice: Redirect to success page
Alice->Acme: Get success page
Acme-->Alice: Return success page
In this flow, Alice visits Bob’s cloud page to view his profile. Alice clicks the Respect Connect button to establish a personal connection with Bob.
Alice gets Bob’s cloud page.
Alice clicks Respect Connect button containing Bob’s link contract request.
{$from}=bob=$do/$get/{$from}{}
Alice goes to Connect service.
Connect service requests Alice’s cloud name.
Alice provides her cloud name.
Connect service discovers Alice’s CSP endpoint.
Connect service redirects Alice to her CSP endpoint.
Alice’s CSP authenticates Alice.
Alice’s CSP processes the link contract request from Bob.
Alice’s CSP presents the confirmation to Alice and asks what contact card(s) she wants to share with Bob.
Alice confirms.
Alice’s CSP sets the link contract to Alice’s XDI endpoint.
Alice’s XDI endpoint sets the link contract to Bob’s XDI endpoint.
Bob’s XDI endpoint acks.
Alice’s XDI endpoint acks.
Alice’s CSP redirects Alice to Bob’s cloud page (which now says Connected).
Asynchronously, Bob’s CSP notifies Bob of the new contact and asks what contact card(s) he wants to share with Alice.
Bob confirms.
Bob’s CSP sets the link contract to Bob’s XDI endpoint.
Bob’s XDI endpoint discover’s Alice’s XDI endpoint.
Bob’s XDI endpoint sets the link contract to Alice’s XDI endpoint.
Bob’s CSP tells Bob the connection is complete.
participant Alice
participant "Alice\nCSP" as AliceCSP
participant "Alice\nXDI Server" as AliceXDI
participant "Connect\nService" as Connect
participant "Discovery\nService" as Disco
participant "Bob\nXDI Server" as BobXDI
participant "Bob\nCSP" as BobCSP
participant Bob
note left of "Alice": Alice has discovered Bob's cloud page
Alice->BobCSP: Get cloud page with Connect button
BobCSP-->Alice: Return cloud page
Alice->Alice: Click Connect button
Alice->Connect: Submit connect request
note right of Connect: Only if not logged in
Connect-->Alice: Return Connect form
Alice->Alice: Enter XDI address
Alice->Connect: Return Connect form
Connect->Disco: Discover Alice CSP endpoint
Disco->Connect: Return Alice CSP endpoint
Connect-->Alice: Redirect to CSP endpoint
Alice->AliceCSP: Submit connect request
note right of AliceCSP: Only if not logged in
AliceCSP-->Alice: AuthN challenge
Alice->AliceCSP: AuthN response
AliceCSP->AliceXDI: Submit XDI request
AliceXDI->AliceXDI: Process XDI request (run rules)
AliceXDI-->AliceCSP: Return XDI response
AliceCSP->AliceCSP: Process XDI response (generate form)
AliceCSP-->Alice: Return confirmation form
Alice->Alice: Select contact card(s)
Alice->AliceCSP: Submit confirmation form
AliceCSP->AliceXDI: $set Acme link contract
AliceXDI->Disco: Discover Acme XDI endpoint
Disco-->AliceXDI: Return Acme XDI endpoint
AliceXDI->BobXDI: $set Acme link contract
BobXDI-->AliceXDI: Success
AliceXDI-->AliceCSP: Success
AliceCSP-->Alice: Redirect to connected cloud page
Alice->BobCSP: Get connected cloud page
BobCSP-->Alice: Return connected cloud page
note right of BobCSP: Asynchronous
BobCSP->Bob: You have new connection with Alice; select contact card(s)
Bob-->BobCSP: Submit selection
BobCSP->BobXDI: $set link contract
BobXDI->Disco: Discover Alice CSP endpoint
Disco-->BobXDI: Return Alice CSP endpoint
BobXDI->AliceXDI: $set link contract
AliceXDI-->BobXDI: OK
BobXDI-->BobCSP: OK
BobCSP-->Bob: OK
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]