You are not logged in Log in Join
You are here: Home » Members » jephte » HOWTO » HOWTO use Zope and IIS together in remote user mode

Log in
Name

Password

 

HOWTO use Zope and IIS together in remote user mode

Notes (2000/05/25)

  • you have to install the jcNTUserFolder before you put Zope in REMOTE user mode.
  • zope in its current form can't handle REMOTE user authentication mode together with standard authentication mode. When you install Zope as as pcgi process to get through IIS, it is the only way to be authenticated and get, for example, to the management screens. When you install jcNTUserFolder as the root user folder, you have to choose the NT user that will be mapped to the super user. The first time, you have to log with that user. Note that this super user needn't be a privileged one under NT.

HOWTO use Zope with IIS in remote user mode

Note: 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� remote user mode, ou il d�l�gue la gestion de l'authorisation au serveur web. Ceci est pratique quand la gestion utilisateur a d�j� �t� mise en place, ou que le serveur web utilise une m�thode non standard pour authentifier l'utilisateur (comme IIS par exemple).

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 NT

Avant 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 IIS

Pour 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:

  • D�sactiver les connexions anonymes. Si vous voulez vous assurer que seuls les utilisateurs du domaine puissent utiliser Zope. Il y a aussi l'avantage que l'on saura � tout moment quel est le nom de connexion de l'utilisateur qui utilise Zope. Si vous voulez autoriser les connexions anonymes, cochez la case. Notez que si vous d�sactivez les connexions anonymes, cela ne vous oblige pas � donner des r�les autres qu'Anonymous dans Zope. Les utilisateurs ne doivent pas �tre anonymes vis � vis de IIS, mais peuvent continuer � avoir le r�le Anonymous sous Zope.
  • D�cocher authentification de base, sauf si vos utilisateurs utiliseront des navigateurs incompatibles avec l'authentification par stimulation/r�ponse de Windows NT, comme Netscape Navigator par exemple. Actuellement, seul Internet Explorer � partir de la version 3.0 supporte cette m�thode d'authentification
  • Cocher l'authentification par stimulation/r�ponse de Windows NT pour une s�curit� maximale, et si les navigateurs utilis�s par vos utilisateurs supportent cette m�thode.

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'authentification

Si 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:

  • d'abord l'utilisateur doit exister sur le domaine et il doit avoir les droits sur la ressource Zope.cgi pour que l'authentification puisse se faire par IIS
  • puis l'utilisateur doit exister dans Zope sous forme canonique pour que des r�les puissent lui �tre attribu�s.
Configuration de Zope en mode remote user

Il 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 superuser existe au niveau du serveur web, en l'occurence IIS.

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 Zope

Comme 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:

  • En suivant les instruction de brianh, interfacer Zope avec IIS avec PCGI.
  • Choisir la m�thode d'authentification utilis�e par IIS: de base ou par stimulation/r�ponse de Windows NT, en fonction des navigateurs clients. Il est possible de choisir les deux, auquel cas les deux types de clients (compatibles et non compatibles) peuvent naviguer sur le site web.
  • Configurer Zope en mode remote user, en faisant attention d'�crire le nom du super utilisateur sous forme canonique DOMAINE\Utilisateur
  • Utiliser un UserFolder insensible � la casse tel jcNTUserFolder ou cr�er les utilisateurs sous forme canonique dans le UserFolder si l'on utilise celui livr� avec Zope.

HOWTO (in english, sort of)

Introduction

Zope 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 NT

Before 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 IIS

Follow 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:

  • uncheck allow anonymous connexions if you want only users from the domain to browse the site (this is handy in the case of an intranet). Check the box if you needn't the user identify himself before browsing your Zope site
  • uncheck basic authentication, unless your users use browsers not compatible with the challenge/response protocol (i.e. all browsers except Internet Explorer >=3.0)
  • check challenge/response authentication, if your users use Internet Explorer

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 protocol

When 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:

  • First the user must exist on the domain and have permission on the Zope.cgi ressource for IIS to accept him
  • Second, that user must exist in Zope in canonical form for roles to be given to him
Putting Zope in remote user mode

The 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 superuser user exists from the web server point of view.

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 Zope

Zope 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

Summary

In summary, this is the steps to follow to interface Zope with IIS in remote user mode:

  • Following brianh's instructions, configure PCGI
  • Choose authentication method to be used by IIS: basic, challenge/response or both
  • Configure remote user mode in Zope, and be sure to use the canonical form form the super user name.
  • use a User Folder product which is case insensitive, or create users in the canonical form in Zope.

That's all folks!