Je suis après quelques conseils sur la façon d'aborder le codage d'un problème, je ne veux pas entrer directement dans le codage sans y penser car je dois être aussi générique et personnalisable que possible,Coder la question architecturale
Le scénario est que j'ai un service Web qui agit comme une passerelle vers les services en aval, dans le but d'authentifier et d'autoriser le message SOAP destiné aux services descendants, ce qui allège fondamentalement le service en aval de le faire eux-mêmes. Chaque message SOAP a une variété de mécanismes WS-Security différents généralement attachés WS-UsernameToken, WS-Timestamp, et une signature XML du corps du message. Mon problème est que je veux trouver une bonne façon extensible de valider tous ces mécanismes de sécurité, je ne sais pas comment faire pour l'apprécier.
Je pensais que d'avoir une classe de contrôleur qui est réactiver les et contrôle le flux de validation c.-à-
ISecurityController controller = SecurityControllerFacotry.getInstance();
boolean proceed = controller.Validate(soapMessage);
en utilisant très peu comme un modèle de conception de modèle qui ditates le flux de la logique à savoir
public Boolean Validate(Message soapMessage)
{
return ValidateAuthentication(soapMessage) && ValidateTimeStamp(soapMessage) && ValidateSignture(soapMessage);
}
Serait-ce la meilleure approche du problème?
Aussi serait-il préférable de mettre chacune de ces méthodes de validation dans une classe qui a implémenté une interface commune? Alors qu'une classe pourrait être instanciée et récupéré d'une sorte d'usine de validation à savoir
IValidationMechanism val = ValidationFactory.getValidationType(ValidationFactory.UsernameToken);
boolean result = val.Validate(soapMessage);
Cela me donnerait un aspect facilement extensible.
Serait-ce une solution évidente ou quelqu'un peut-il penser à d'autres façons de le faire?
Je suis interset dans les modèles de conception et de bons principes de oo donc je voudrais descendre une route en les utilisant si possible.
Merci à l'avance
Jon
EDIT: Le service est essentiellement un service de sécurité de la passerelle qui soulage la charge de l'authentification et l'autorisation des services qui sont assis derrière elle. Le service de sécurité peut être considéré comme un intermédiaire invoqué implicitement sur le chemin de message SOAP qui valide les mécanismes de sécurité dans le message SOAP et, en fonction du résultat de la validation, transmet le message au service aval approprié en interrogeant les en-têtes WS. Bien que le service n'est pas vraiment la question, il est plus sur la façon de mettre en œuvre la procédure de validation.
Ceci est source de confusion. Une clarification serait une aide précieuse. Il semble que vous construisiez un service d'agrégation qui fournit une authentification/autorisation pour plusieurs services Web hébergés par des fournisseurs en aval. Est-ce une représentation exacte? En effet, votre service est une transmission à ces autres services? – jro
Etes-vous sûr de vouloir dire les services "en aval"? Normalement, un service est considéré comme étant "en amont" des clients qui l'utilisent ... Alors, voulez-vous vraiment dire "Services en amont", ou voulez-vous dire "clients DownStream"? –
le service est un service de sécurité qui se trouve comme une sorte de passerelle/pare-feu en face d'autres services donc il agit comme un validateur de sécurité et mécanisme de routage pour les messages de savon – Jon