Question

Ce que je veux faire est:

1) Authentifier le client pour le premier appel, il fait au service WCF, ce sera sur une base par utilisateur plutôt que sur une base par application.

2) Vérifiez que le client est autorisé à faire l'appel.

3) Pour les appels ultérieurs à autoriser uniquement, avec l'authentification ayant déjà été fait à l'étape 1 pour un appel précédent.

ou

Si le client est connecté à une autre instance du service pour une raison ou la « poignée de main » est rompu à réauthentifier.

J'espère que cela a un sens, cela se produit implicitement dans WCF en utilisant par exemple nom d'utilisateur et l'authentification par mot de passe et de l'autorisation ou dois-je / est-il un moyen de quelque chose d'écriture personnalisée? Essentiellement, cela est l'efficacité.

Merci, Fugu

Était-ce utile?

La solution

Ceci est appelé contexte de sécurité (ou session de sécurité) et il est possible avec la sécurité des messages. La seule limitation est que la session est gérée entre instance de service unique et proxy client (tous les appels doivent être effectués sur la même instance proxy).

Voici une configuration de base pour permettre le contexte de sécurité:

<wsHttpBinding>
  <binding name="wsHttp">
    <security mode="Message">
      <message clientCredentialsType="UserName" estabilishSecurityContext="true" />
    </security>
  </binding>
</wsHttpBinding>

EstabilishSecurityContext est vrai par défaut. Lorsque vous activez ce protocole WS-SecureConversation est utilisé. Le premier appel passe des informations d'identification qui sont authentifiés et le jeton de sécurité est délivré au client. Appels suivants utilisent cette jeton de sécurité pour fournir l'identité du client. Ce comportement est transparent pour les développeurs afin que vous ne devez pas traiter avec jeton du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top