Hi Akalanka,

On Tue, Oct 11, 2016 at 4:58 PM, Akalanka Pagoda Arachchi <
darsha...@wso2.com> wrote:

> Hi All,
>
> We're implementing the Unique User Id concept in C5 User Core. This
> evolved as a requirement with the introduction of the Domain model to the
> User Core.
>
> The user domain model is as follows.
>
>    - Users are available in multiple domains.
>    - Each domain can contain more than one IdentityStoreConnector.
>    - Each connector will have a set of user attributes.
>    - A user is an object created by combining all the attributes in
>    IdentityStoreConnectors for a domain.
>    - Each user attribute from an IdentityStoreConnector maps to a
>    specific claim.
>
> When resolving a user, there should be a mapping to identify the same user
> between different connectors. For this purpose we're introducing a Unique
> User Id concept. The idea behind Unique User Id is as follows.
>
>
>    - A Unique User Id will be unique across the User-Core no matter the
>    domain the user in.
>
> Are you saying that this ID will be unique across all the domains?

>
>    - This unique Id will be maintained in a database table.
>    - The table will contain mapping for the Unique Id to each connectors'
>    individual user Id.
>    GlobalUniqueId | ConnectorUserId | ConnectorId
>
>
In here, can you also clearly explain the relationship between GlobalUniqueId,
ConnectorUserId and/or UniqueUserId? Because, this will cause confusion as
they all refer as an identifier for the user.

And how they will be used in resolving a user?



> When retrieving all the Claims for a User, following sequence will be
> followed.
>
>    - Get user from primary attribute
>
> Need to explain what is a primary attribute here with an example? Also how
primary attribute is configured at connector level?

>
>    - Get unique user Id from mapping table for that user
>    - Find the connector which has the required attribute
>    - Get connector specific user Id for the required connector from the
>    mapping table
>    - Retrieve attribute value from that connector.
>
> A simplified sequence diagram for this flow is as below.
>

In the below sequence diagram, I think we have missed how the UniqueUserId
is retrieved before calling the UserBuilder.setUniqueUserID. Is that
correct?


>
>
> ​
>
>                              *Sequence Diagram for getClaim*
>
> One important note on this implementation is that as of the current design
> UserCore will not be responsible for populating the unique user Id mapping
> table. How and where this should be populated is still an open discussion.
> Any suggestions are welcome.
>


How many DB/connector level calls that this will have in doing a typical
user retrieval with above suggestion? What will be the performance impact?

Thanks,
Kishanthan.

>
> Thanks,
> Akalanka.
> ​
>
>
> --
> *Darshana Akalanka Pagoda Arachchi,*
> *Senior Software Engineer, WSO2*
> *+94777118016 <%2B94777118016>*
>



-- 
*Kishanthan Thangarajah*
Technical Lead,
Platform Technologies Team,
WSO2, Inc.
lean.enterprise.middleware

Mobile - +94773426635
Blog - *http://kishanthan.wordpress.com <http://kishanthan.wordpress.com>*
Twitter - *http://twitter.com/kishanthan <http://twitter.com/kishanthan>*
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to