2009-09-09 8 views
3

cas:
Un client de bureau interagit avec le serveur A.
serveur A, par conséquent, besoin de se connecter au serveur B.
Le client est transmis la demande OAuth.
Maintenant, dans le client, nous avons déjà les informations d'identification de l'utilisateur pour le serveur B. Existe-t-il un moyen de s'authentifier auprès du serveur B sans inviter l'utilisateur ou afficher une interface utilisateur? Nous devons le faire de manière générique, car nous ne savons pas ce qu'est le serveur B.Est-il possible d'authentifier en utilisant OAuth sans demander à l'utilisateur quand nous avons les informations d'identification de l'utilisateur?

Ma compréhension actuelle est que ce n'est pas le cas. Même si nous avons traité le formulaire de connexion nous-mêmes, il y aurait toujours la confirmation OAuth que l'utilisateur devrait cliquer sur. Je veux juste confirmer que ma compréhension actuelle est exacte. Faites-moi savoir si vous avez des idées.

Répondre

1

Le client a été envoyé à une page d'autorisation sur le serveur B via une redirection HTTP. Puisque vous ne savez rien sur le serveur B, vous ne savez pas ce que cette autorisation (et/ou cette authentification) implique; c'est hors de portée pour OAuth. Vous ne savez pas que vous avez les informations d'identification de l'utilisateur pour le serveur B, car vous ne savez pas ce qu'elles sont.

Normalement, le client est le navigateur de l'utilisateur et le serveur B peut choisir d'accepter les informations d'authentification et/ou d'autorisation qu'il a stockées sur le client (généralement avec un cookie), sans intervention de l'utilisateur. Cependant, ceci est également hors de votre contrôle; vous ne pouvez pas empêcher le serveur B d'exiger une interaction de l'utilisateur. Si vous avez seulement besoin de l'authentification, OpenID est plus susceptible de permettre cela, car il n'y a habituellement aucun choix d'identification, mais ce n'est toujours pas certain.

Vous pouvez stocker un jeton d'accès pour un renouvellement et une utilisation ultérieurs sans aucune autorisation. Cela dépend également du serveur B, et vous ne pouvez pas compter sur cela pour un serveur générique.

+1

Je connais l'adresse du serveur B, et les informations d'identification de l'utilisateur pour ce serveur sont stockés localement sur le client riche. – Pratik

1

En réponse simple est No. Comme le serveur B doit interagir avec le serveur A, le serveur A doit être enregistré sur le serveur B (comme l'enregistrement de l'application pour LinkedIn, Twitter, etc.). Généralement, cela dépend du serveur B mais le serveur IMO B n'autorise pas l'accès direct.

Cependant, il peut y avoir une situation différente où vous avez 2 points d'accès pour le serveur B et vous pouvez utiliser les détails du serveur C ou du serveur A.

A =>C (Access) 
A !=>B (no access) 
C =>B (access) 

Ici, vous pouvez utiliser les détails du serveur C pour obtenir des données de B puis en utilisant A détails pour obtenir de C.