RE: [phpxmlrpc] User authentication

2006-03-27 Thread Gaetano Giunta



Authtentication and authorization are complex subjects, 
and there is no 'single solution' that fits all situations.
 
To 
decide on the best setup for your needs you should start with the following 
questions:
- will there be a single webservice consumer 
application or does the system have multiple different 
users?
- is 
there need for https, eg. do the webservices transfer sensitive data over public 
networks (internet)?
- is 
there any need for integrating user authentication with pre-existing solutions 
(eg windows active directory / ldap)?
 
1) For 
the 'very simple case', e.g. one single webservice-consumer-application, that 
has full access to every web service, you can very quickly and easily use the 
authentication provided by your web server, be it either Apache or IIS (look at 
the appropriate documentation).
 
If you 
need to give different access rights to different web services, you could put 
up many server.php pages, each serving some xmlrpc method, and assign 
different access rights to those (in fact you could put the business logic used 
by the webservices in functions/classes in separate php scripts, and simply 
include the scripts with the business logic from within the php scripts that 
expose the web services. this makes for a very clean 
architecture).
 
You 
need to make sure that the xmlrpc client you are using has support for the kind 
of HTTP authentication you are setting up.
If you 
are using phpxmlrpc as web service consumer, the client has support for http 
Basic auth, and for https when CURL is enabled. With recent php and curl 
versions, you might also get support for NTLM authentication, but I never tried 
it out...
 
 
Otoh 
you might 2) use php sessions for enabling authentication, or 3) use some 
home-brewed method that puts the authorization token inside the xmlrpc calls 
themselves.
Both 
options can turn out to be quite complex in implementation in the real world, 
even though they offer greater flexibility over web-server 
authentication.
 
If you 
use php sessions, you need to enable the session stuff in your server.php file, 
but must take care that it does not interfere too much with the http handling 
that is carried out by the library itself.
The 
xmlrpc client must also support using cookies, which many libraries do not 
do.
If you 
use the phpxmlrpc library as client, you should e.g. extract by hand the cookie 
from the first xmlrpc response received, and use it adding it by hand 
into successive requests.
 
If you 
use inside-the-webservice auth, the scheme would look something like 
this:
- app 
calls webservice 1, passing crdentials. webserver validates credentials, 
generates token, saves it into local db/session storage, and send it to client 
as response
- app 
receives token, and uses it as first (last?) parameter for every successive 
xmlrpc request
- all 
webservices (except the authenticating one) on the server must check for the 
presence of a valid token as first parameter
- you 
should add a close-seeion webservice for extra security, and take into account 
basic attacks such as session-injection and fixation, incase you have 
to guarantee real security
 
 
disclaimer: I am not a security 
consultant
 
Bye
Gaetano Giunta
 

  -Original Message-From: 
  [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]On Behalf Of Jem 
  MawsonSent: Monday, March 27, 2006 3:38 AMTo: 
  phpxmlrpc@lists.usefulinc.comSubject: [phpxmlrpc] User 
  authenticationHelloI'm very new to PHP, taking it 
  up primarily to use the XML-RPC package.I would like to protect most 
  of my rpc methods such that they will only execute when called by an 
  authorised user. I'm not quite sure how to go about authentication though. 
  Does anybody have a best practices guide on how to achieve client 
  authentication? Is it best to use http basic auth and check credentials on 
  each method call? Or is there some inherent PHP support for sessions that can 
  be used? Yours confusedly,Jem-- http://www.loftinspace.com.au/jem 

___
phpxmlrpc mailing list
phpxmlrpc@lists.usefulinc.com
http://lists.usefulinc.com/cgi-bin/mailman/listinfo/phpxmlrpc


[phpxmlrpc] User authentication

2006-03-26 Thread Jem Mawson
HelloI'm very new to PHP, taking it up primarily to use the XML-RPC package.I would like to protect most of my rpc methods such that they will only execute when called by an authorised user. I'm not quite sure how to go about authentication though.
Does anybody have a best practices guide on how to achieve client authentication? Is it best to use http basic auth and check credentials on each method call? Or is there some inherent PHP support for sessions that can be used?
Yours confusedly,Jem-- http://www.loftinspace.com.au/jem
___
phpxmlrpc mailing list
phpxmlrpc@lists.usefulinc.com
http://lists.usefulinc.com/cgi-bin/mailman/listinfo/phpxmlrpc