views:

271

answers:

5

hello everyone,

i have following scenario and can't seem to find anything on the net, or maybe i am looking for the wrong thing:

i am working on a webbased data storage system. there are different users and different places and only certain users are allowed to access certain parts of the system. now, we do not want them to connect to these parts from at home or with a different computer than they are using at their work-place (there are different reasons for that).

now my question is: if there is a way to have the work-place-pc identify itself to the server in some way over the browser, how can i do that? oh and yes, it is supposed to be webbased.

i hope i explained it so everyone understands. thnx for your replies in advance.

... dg

A: 

IP address. Not bombproof security but a start.

Lenni
Unless the IP address changes often, or when the computer is turned off overnight (e.g. if DHCP leases are short).
MattK
That's why I said "it's a start".
Lenni
Even a DHCP address will be within certain ranges. You could check against that. At least they'd be different than the internal subnets at his company.
Allain Lalonde
the ip-address was our first idea, but as you pointed out, it is "not bombproof" ... maybe combined with other ways. thnx.
doro
+1  A: 

Since you're going web based you can:

Examine the remote host's IP Address (compare it against known internal subnets, etc)

During the authentication process, you can ping the remote IP and take a look at the TTL on the returned packets, if it's too low, then the computer can't be from the local network. (of course this can be broken, but it's just 1 more thing)

If you're doing it over IIS, then you can integrate into SSO (probably the best if you can do it)

Allain Lalonde
thnx for your reply. i will look into that!
doro
+1  A: 

If it's supposed to be web-based (and by that I mean that the web server should be able to uniquely identify the user's machine), then you choices are limited: per se, there's nothing you can obtain from the browser's headers or request body that allows you to identify the machine. I suppose this is by design, due to the obvious privacy implications.

There are choices though, none of which pain-free: you could use an ActiveX control, which however only runs on Windows (and not on all browsers I think) and requires elevated privileges. You could think of a Firefox plug-in (obviously Firefox only). At any rate, a plain-vanilla browser will otherwise escape identification.

Guido Domenici
"per se, there's nothing you can obtain from the browser's headers or request body that allows you to identify the machine" --- i thought so much, but thnx for confirming ... but i will think about the other thing. maybe we will make it a requirement, that on workstations they have to work with firefox ... at least there we can make ppl to use the browser we would want *g*
doro
Firefox plugin can be copied from plugins directory and taken home.
Chris
+1  A: 

There are only a few of REAL solutions to this. Here are a couple:

  1. Use domain authentication, and disallow users who are connecting over a VPN.
  2. Use known IP ranges to allow or disallow access.
John Gietzen
thnx a lot, i will see how that works exactly and if it fits our needs. thnx you!
doro
+1  A: 

I agree with Lenni... IP address is a possible solution if they are static or the DHCP server consistently assigns the same IP address to the same machine.

Alternatively, you might also consider authentication via "personal certificates" ... that's what they are referred to in Firefox, don't know it that's the standard name or not. (Obviously I haven't worked with these before.)

Basically they are SSL or PKI certificates that are installed on the client (user's) machine that identify that machine as being the machine it says it is -- that is, if the user tries to connect from a machine that doesn't have a certificate or doesn't have a certificate that you allow, you would deny them.

I don't know the issues around this ... it might be relatively easy for the same user to take the certificate off one computer and install it on another one with the correct password (i.e. it authenticates the user), or it might be keyed specifically to that machine somehow (i.e. it authenticates the machine). And a quick google search didn't turn up any obvious "how to" instructions on how it all works, but it might be worth looking into.

---Lawrence

Lawrence
thnx, this sounds like an interesting approach. i will definately look into this as well. maybe it turns out to be a working approach.
doro