2011-02-22 6 views
1

Disons que j'ai et personnalisé STS qui authentifie les utilisateurs d'une application web. Ce STS contient également des données telles que l'identifiant, le nom et l'adresse e-mail de l'utilisateur. J'ai la situation suivante:Identité basée sur les revendications -> synchroniser les données utilisateur

J'ai une application qui utilise le STS. Dans cette application, les utilisateurs peuvent créer un enregistrement, et l'une des propriétés sera alors «créateur» rempli avec l'identifiant de l'utilisateur. Si les gens recherchent cet enregistrement, je veux leur montrer le vrai nom et non l'identifiant de l'utilisateur. J'ai donc besoin de garder une relation entre l'identifiant de l'utilisateur et son vrai nom.

Problème: Dans la base de données de l'application, j'ai seulement un identifiant d'utilisateur, mais je veux montrer des détails d'utilisateur spécifiques. Quelle est la meilleure façon de faire cela? J'ai pensé à ajouter une méthode à mon STS, qui me demande des données utilisateur supplémentaires, mais ce serait très lent Si j'ai besoin de montrer comme 50 enregistrements sur l'écran qui ont tous des ID utilisateur différents. Une autre solution consiste à conserver une table dans mon application avec les données utilisateur. Un utilisateur est ajouté à cette table lorsque 'l'utilisateur' est utilisé pour la première fois par mon application. Mais comment et quand synchronisez-vous cette table?

Je pense que je préfère la solution 2, et juste de synchroniser les données tous les soirs.

Qu'en pensez-vous?

Répondre

2

Pouvez-vous modifier le schéma de votre base de données? Si vous le pouvez, vous pouvez obtenir le nom et d'autres informations sur les propriétés de l'utilisateur à partir du STS, puis les enregistrer de votre côté (peut-être dans la base de données utilisateur ou dans l'enregistrement associé). Vous traiteriez cela comme des données "de référence" pour l'interrogation et l'affichage uniquement et n'autoriseriez pas les modifications.

Chaque fois qu'un utilisateur s'authentifie (et présente un jeton avec toutes ces revendications), vous devez simplement mettre à jour les informations sur votre base de données. Pour que cela fonctionne, vous avez besoin d'un bon ID unique (l'ID utilisateur?) Qui peut être utilisé comme un handle permanent et approuvé pour les utilisateurs.

+0

Merci. Bon à savoir que c'est une bonne solution pour créer une table d'utilisateur 'en lecture seule' dans la base de données de l'application. La mise à jour de cette table sur l'événement d'authentification semble bien pour la plupart du temps. Je pense que nous pouvons trouver quelques situations où les utilisateurs sont référencés (comme «lecteur» ou quelque chose), mais ils ne se connectent jamais dans le système, mais nous allons travailler sur quelque chose pour cela. – Thomas

+0

plase donner un conseil. Quelle combinaison de revendication ou de revendication pourrait être utilisée comme ID utilisateur unique? –

+0

Est-ce que votre "userid" n'est pas assez bon? Les gens utilisent souvent des e-mails aussi. Certains fournisseurs d'identité fournissent une sorte d'identificateur de nom (par exemple, LiveID, Google, etc.). –

Questions connexes