0

Je suis mise en œuvre de plugin WS-Federation en utilisant l'authentification wsfed au-dessus de Thinktecture IdentityServer, je me suis moi-même UserService mis en œuvre avec la méthode AuthenticateLocalAsync comme ci-dessouspeut retourner IdentityServer réclamations dans le cadre de Authentifier demande

public async Task<AuthenticateResult> AuthenticateLocalAsync(string username, string password, SignInMessage message) 
     { 
      var requestViewModel = new SignInRequestViewModel 
           { 
            EmailAddress = username, 
            Password = password 
           }; 

      var result = await signInApplicationService.SignInAsync(requestViewModel); 

      var responseViewModel = result.ViewModel; 

      var claims = claimBuilder.GetClaims(responseViewModel); 

      return new AuthenticateResult(
       responseViewModel.CustomerId.ToString(), 
       string.Format("{0} {1}", responseViewModel.FirstName, responseViewModel.LastName), 
       claims); 
     } 

Cette méthode déclenchée lorsqu'un événement de connexion déclenché, comme vous pouvez le voir, j'authentifier les utilisateurs par rapport à mon propre référentiel de base de données, puis à partir du résultat, j'ai construit l'objet revendications qui référencé dans AuthenticateResult objet et revenir.

Je pensais que les revendications devraient maintenant être disponibles sur le client, donc pas besoin de faire autre demande, mais il fait en fait la deuxième demande de lui-même qui la méthode GetProfileDataAsync s'appelle, et la base du document:

Cette méthode est appelée à chaque fois que les revendications sur l'utilisateur sont demandés (par exemple lors de la création de jeton ou via le point final de userinfo

qui un peu de donner un sens, mais ce que cela signifie que je dois appeler à nouveau ma base de données pour récupérer données client à nouveau, et reconstruire les revendications mêmes que je l'ai fait dans ma méthode AuthenticateLocalAsync?

Si oui, quel est le point de renvoyer des revendications dans la première méthode d'authentification?

Quelqu'un peut-il expliquer s'il vous plaît?

Merci

Ming

Répondre

0

L'appel à GetProfileDataAsync a une ClaimsPrincipal. Les revendications que vous mettez là dans l'étape d'authentification devraient être sur ce principal. Donc, pas besoin d'un aller-retour de DB.

Si les revendications ne peuvent pas être trouvées là-bas, ce serait un bug et vous devriez ouvrir un problème sur le suivi des problèmes.