Log in |
HOWTO use Zope and IIS together in remote user modeNotes (2000/05/25)
HOWTO use Zope with IIS in remote user modeNote: my native language is not English and writing in english is a time consuming task as far as I'm concerned. So the howto has been written in french, and I attempted to translate in english afterhand. If someone can provide a better translation, he is welcome. HOWTO (in french)Introduction Zope d�tache la gestion de l'authentification (qui est
l'utilisateur?) et de l'autorisation (que lui est-il permis de
faire?). Quand Zope tourne avec un serveur web par exemple avec un
wrapper PCGI, il peut fonctionner dans un mode appel� Ce document explique comment interfacer Zope et IIS de fa�on qu'IIS g�re l'authentification des utilisateurs. De cette fa�on, l'on peut configurer IIS pour utiliser le mode d'authentification par stimulation/r�ponse (qui est cens� �tre plus s�r) pour la s�curit�, et Zope pour la puissance... Authentification sous Windows NTAvant d'aborder l'interfa�age avec Zope, il faut comprendre comment fonctionne l'authentification sous Windows NT. Quand un utilisateur ouvre une session sur un serveur NT, il doit fournir un nom d'utilisateur, ainsi qu'un nom de domaine par rapport auquel il faut �tre authentifi�. Ce nom de domaine est soit le nom du serveur NT, auquel cas il s'agit d'une ouverture de session locale sur le serveur et donc ce serveur doit effectuer l'authentification, soit un nom de domaine dans lequel se trouve le serveur NT, auquel cas l'authentification est effectu�e par le controleur principal de domaine ou par un controleur secondaire. Ainsi, le serveur NT a besoin de savoir sur quel domaine l'utilisateur veut ouvrir une session pour savoir quel serveur effectuera l'authentification. C'est pour cela qu'en interne, un utilisateur sous NT est en fait �crit sous la forme DOMAINE\Utilisateur. Notez que le nom de domaine et d'utilisateur n'est pas sensible � la casse. Interfa�age de Zope avec IISPour interfacer Zope avec IIS en utilisant PCGI, suivez les instructions de brianh � l'adresse http://www.zope.org/Members/brianh/iis_howto. Cependant, ne d�sactivez pas l'authentification par stimulation/r�ponse de Windows NT. Ceci permet � IIS d'utiliser une m�thode s�re pour authentifier l'utilisateur. Et comme de toute fa�on Zope ne s'occupera pas de l'authentification, autant utiliser ce que IIS a de plus s�r. Dans le gestionnaire de services internet, cliquez avec le bouton droit sur Zope.cgi, affichez les propri�t�s, et dans l'onglet s�curit� de fichier, cliquez sur modifier le contr�le d'authentification. Vous devez:
Notez qu'il faut qu'au moins une des m�thodes d'authentification soit coch�e, sinon cela signifie que Zope doit g�rer lui-m�me l'authentification, ce qui n'est pas ce que nous voulons. Notez que cette configuration se fait fichier par fichier dans le gestionnaire de services internet, et donc qu'il n'est pas n�cessaire de modifier les param�tres pour tout le site. Sauf si vous avez d�sactiv� les connexions anonymes, vous devez pouvoir � ce niveau acc�der aux ressources non prot�g�es de Zope. Comment fonctionne l'authentificationSi l'on essaye d'acc�der � une ressource prot�g�e, Zope renvoie un en-t�te HTTP 401-Unauthorized. IIS s'engage alors dans un dialogue avec le navigateur web pour essayer d'authentifier l'utilisateur. Notez que Zope n'est � aucun moment engag� dans ce processus. Tant que l'utilisateur ne s'est pas correctement authentifi� (nom et/ou mot de passe incorrect), IIS continue � dialoguer avec le navigateur. Quand l'utilisateur s'identifie correctement (nom/mot de passe correspondant � un utilisateur valide sur le domaine sp�cifi�), et que cet utilisateur a les droits pour acc�der � Zope.cgi sur le serveur, alors Zope est lanc� avec l'information sur l'utilisateur qui se pr�sente dans la variable REMOTE_USER. Notez que cette information est sous forme canonique, c'est � dire DOMAINE\Utilisateur. Zope cherche ensuite cet utilisateur dans sa propre base d'utilisateurs (super utilisateur, contenu des User Folders), et v�rifie les r�les de cet utilisateur. Si cet utilisateur n'est pas trouv� (auquel cas il obtient le r�le Anonymous), ou si ses r�les ne correspondent pas aux exigences pour acc�der � la ressource prot�g�e, Zope renvoie l'en-t�te HTTP 401-Unauthorized au serveur web, et le processus d'authentificatin recommence. Notez donc que l'authentification se fait en deux temps:
Configuration de Zope en mode remote userIl faut configurer Zope pour qu'il passe en mode remote user. ceci se fait en supprimant le mot de passe du super utilisateur dans le fichier access du r�pertoire d'installation de Zope. Par exemple, si ce fichier contient: superuser:password Il faudra le remplacer par: superuser: Attention! La documentation de Zope pr�cise qu'il faut que
l'utilisateur Et c'est l� qu'est le probl�me. Zope est sensible � la casse pour la gestion des utilisateurs, alors que IIS ne l'est pas. Heureusement, IIS envoie toujours les informations utilisateur sous la forme DOMAINE\Utilisateur. Le domaine est donc en majuscule, et Utilisateur est la copie conforme de la d�finition faite dans le gestionnaire des utilisateurs sous NT. Ainsi, si l'utilsateur MikeP est cr�� sous NT dans le domaine wild_west, et que l'on veut que cet utilisateur soit le super utilisateur, il faudra que le fichier access contienne: WILD_WEST\MikeP: Red�marrez Zope apr�s avoir fait cette modification. Cr�ation des utilisateurs sous ZopeComme dit pr�c�demment, Zope est sensible � la casse. Si un objet UserFolder classique est utilis� pour g�rer l'autorisation des utilisateurs, ceux-ci doit �tre cr�� sous forme canonique dans le UserFolder si l'on veut pouvoir leur donner des r�les. Il y a aussi possibilit� d'utiliser un UserFolder tel que NTUserFolder de htrd ou jcNTUserFolder de jephte. Je ne sais pas pour NTUserFolder, mais jcNTUserFolder n'est pas sensible � la casse, ce qui r�soud le probl�me. C'est pour permettre de saisir le nom du super utilisateur ind�pendamment de la casse que jcNTUserFolder demande le nom de l'utilisateur NT qui fera office de super utilisateur lors de sa cr�ation. R�sum�En r�sum�, voici les �tapes � franchir pour interfacer Zope avec IIS en mode remote user:
HOWTO (in english, sort of)IntroductionZope separates authentication (who is the user) from authorization (what is he allowed to do?). When Zope is interfaced with a web server, for example through PCGI, it can run in remote user mode, that is it can delegate authentication to the web server. This can be handy when the web server uses a non standard authentication scheme (e.g. IIS) This document explains how to use Zope and IIS in remote user mode, to allow IIS to handle authentication, in challenge/response mode for example. Authentication under Windows NTBefore we can deal with interfacing Zope and IIS, we have to understand how does authentication work under Windows NT. When a user open a session on a Windows NT server, he has to provide a username, and a domain name from which he wants to be authenticated. This domain name may be the NT server computer name, and the user opens a session locally (in that case, the NT server must perform the authentication itself), or it can be a domain name into which the NT server exist, and the authentication is performed by the PDC (primary domain controller) or a BDC (backup domain controller). It is clear that the NT server needs the domain name on which the user wants to open the session to be able to delegate authentication to the right NT server. A canonical username under NT is written DOMAIN\Username. Note that the canonical username is not case sensitive Interfacing Zope and IISFollow instructions given by brianh at http://www.zope.org/Members/brianh/iis_howto. But you don't have to disable challenge/response authentication. This does not matter because Zope won't do authentication. Go to IIS Manager, right-click on Zope.cgi, select Properties, click on the file security tab and then on authentication control. You have to:
Note that you must check basic authentication or challenge/response authentication, or both. If you check None, this means Zope must handle authentication itself which is not what we want. That configuration can be done on a file by file basis in the management console, so you needn't change the parameters for all the site. Unless you disabled anonymous connexions, you should now be able to browse public (i.e. not protected) Zope ressource. What is the authentication protocolWhen you try to browse a protected ressource, Zope send a 401- Unauthorized HTTP header. IIS chats with the web browser to try to authenticate the user. Zope is not involved at all in this process. IIS verify that the user/password in correct (match with a valid nt user), then verify that this user has sufficient right on the Zope.cgi ressource (ACL settings) Only if all those don't fail that Zope is given the user identity in REMOTE_USER variable in the canonical form DOMAIN\Username. Zope looks for that user in its user database (in the User Folder or any other user folder product), and check what roles are given to that user. If the user does not exists, or if he has not the required roles, Zope responds with 401-Unauthorized again, and the entire authentication process stard again. You have noted that the authentication is done in two phases:
Putting Zope in remote user modeThe file access in Zope installation directory must not contain any password for the super user to enable remote user mode. For example, il access contains: superuser:password It has to be replaced with: superuser: Be careful! Zope documentation says that the And here lies the problem. Zope is case sensitive. IIS is not. Fortunately, IIS always send user information in canonical form DOMAIN\Username. The domain name is uppercase, and the user name is shown exactly the way it has been typed in the NT user manager. For example, if user MikeP from domain wild_west is to be the super user, the access file must contain: WILD_WEST\MikeP: Restart Zope after this modification Creating users under ZopeZope is case sensitive. If the default User Folder is used to manage users, they have to be created in the canonical form You can also use NT User Folder product like htrd's NTUserFolder or jephte's jcNTUserFolder. I don't know about NTUserFolder, but I wrote jcNTUserFolder to be case insensitive. This is why upon creation of jcNTUserFolder, you must choose the nt user who will be the super user, to be able to input the user name case insensitive SummaryIn summary, this is the steps to follow to interface Zope with IIS in remote user mode:
That's all folks! |