I am building an information recording system (WCF based) for a business that is accessible by staff over the internet, this software will not be distributed and there will only be a handful of users with the client application installed.
Due to the fact that the stored information is highly sensitive I would obviously like to authenticate and authorize any service requests. So, there will be around 4 service endpoints dedicated to handling a variety of requests, in order to protect these services I was thinking to authenticate any requests with a token based system (which is effectively just a GUID). So this would mean that unless the client packages there requests with this token they cannot access those services! Right? Now, in order to retrieve a valid token the client must connect to the security token service.. this begins with mutual SSL authentication (to prevent man-in-the-middle-attacks), then the user must provide their login details (encrypted of course), then if the details are valid they are provided with a token! The token is then logged, along with the users details. Now the client can send valid requests to the other services! When one of the other services receives a request the token and user credentials are checked against the "current user store" and their role is retrieved, if the users role allows that request it is then processes.
Sorry if that is all a bit long winded! But basically what I am asking
I respect the fact that I am not a security wizard, however I am willing to learn! So please be nice ;)
sam dixonPosted Aug 18, 2013, 11:14 AM
Mahesh ChandPosted Aug 17, 2013, 8:08 PM
In addition to all what you are doing, it is a good idea to expire inactive client connections after a time interval. Are you going to allow same user connect from multiple devices/locations? Probably want to think about that. Also Client user password change is recommended after some time, depending on where and how they are connecting from.
Good luck!