views:

199

answers:

3

Hi - Looking for some advice about the use of client certs to retro-fit access control to an existing app.

Our company has an existing intranet app (classic ASP/IIS) which we licence to others. Up till now it's been hosted within each organisation that used it and the security consisted of "if you're able to access the intranet you're able the access the application".

I'm now looking for a way to host this app externally so that other organisations who don't wish to host it themselves can use it (each new client would have their own installation).

All user in the new organisation would have a client cert so what I'd like to do is use the 'Require Client Certificate' stuff in IIS. It allows you to say "if Organisation=BigClientX then pretend they're local userY".

What I would prefer is something that says "if Organisation=BigClientX then let them access resources in virtualdirectoryZ otherwise ignore them".

I would be very happy to buy an addon (perhaps an ISAPI filter ?) which would do this for me if that was the best approach. Any advice / war stories would be welcomed.

A: 

I've done something similar...

Generate the certificates internally from your org's domain controller. Export them both as PFX format for distribution, and CER format for you to import in IIS.

Distribute the PFX format exports along with the CA certificate for your DC, so your customers machines will "trust" your CA.

Now in the app properties IIS, go to the Directory Security tab, and under "Secure Communications" click "Edit". In there, click "Accept client certificates", "Enable Client Certificate Mapping", then "Edit".

Under the 1-to-1 tab, click "Add" and import the CER file. Enter the account you'd like to map this certificate to.

As for the "let them access resources" I'd advise doing that by the user account they're mapped through - that is, you can provide access to resources based on that account either through NTFS permissions, or through code by identifying the security context of the logged-in user.

msulis
Thanks for your response, I appreciate it ... and apologies for the slow acknowledgment.
southof40
A: 

Using Client Certificate Authentication with IIS 6.0 Web Sites. There is a complete step by step tutorial on Client Certificate Authentication on the linked site.

notandy
Thanks for the link - useful article which underlines which JohnW says about two factor authentication. Apologies for my slow acknowledgment of your response.
southof40
A: 

You likely want to do this. client certs are really intended for a second factor of authentication, but not the primary source. To say it differently, you still need to configure your app for basic or forms authentication.

The technology behind public/private keys is rock solid. However, you need a very mature IT organization who is dealing with certificate lifecycle management. If you do not have this, you will get untold failure scenarios because the certificate was expired, wasn't copied to the new computer, etc.

This is especially true in your scenario where your application is internet facing (in thee 'hosted' scenario) - you have little control about the issuance of the certificates to your users.

JohnW