登录 | 注册 | FAQ
Anonymous

Nusoap - Header Authentication

+ 发表回复

2 篇帖子 分页: 1 / 1


Nusoap - Header Authentication

gernani » 周五 12月 13, 2013 5:34 pm

Olá Pessoal, tudo bem?

Bom, sou novíssimo aqui no forum e preciso da ajuda de vcs.

Preciso de algum tutorial que me mostre como fazer autenticação por headers em um webservice criado com Nusoap. Tbm comecei a mexer com nusoap e webservices agora, entao estou um pouco perdido também...



Alguem teria isso?



Segue abaixo o código do meu Server e cliente q eu criei. No server ele faz a autenticação do usuario, e depois a inserção em um banco. Queria colocar o Header authentication pra evitar qualquer um acessar o WS..

Notem q no cliente.php eu setei um header, mas nao sei se é assim, e nem como faz.
Dese ja agradeço!


cliente.php

代码: 全选

<?php //cliente.php require_once('lib/nusoap.php');
$wsdl = '***********/server.php?wsdl';
$client = new nusoap_client($wsdl, true);


$err = $client->getError();
if ($err) {
echo '<h2>Erro no construtor</h2><pre>' . $err . '</pre>';
}


$login = array('usuario' => '*****', 'senha' => '******');

$result = $client->call('validalogin', array('login' => $login));



if ($client->fault) {
echo '<h2>Falha</h2><pre>';
print_r($result);
echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
  echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {

if($result == "yes"){


$client = new nusoap_client($wsdl, true);


$auth='<wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>admin</wsse:Username> <wsse:Password Type="wsse:PasswordText">1234</wsse:Password> <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">'.time().'</wsu:Created>   </wsse:UsernameToken> </wsse:Security>';

$client->setHeaders($auth);

$err = $client->getError();
if ($err) {
echo '<h2>Erro no construtor</h2><pre>' . $err . '</pre>';
}

$dados = array(
'full_name' => 'Ademir Braga',
'dat_nascimento' => '30/01/1984',
'cpf' => '11111111222',
'email' => 'ademirbraga100@yahoo.com.br',
); $result = $client->call('cadastrar', array('entrada' => $dados));

if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
echo '<h2>Result</h2><pre>';
// Decode the result: it so happens we sent Latin-1 characters
if (isset($result['return'])) {
  $result1 = utf8_decode($result['return']);
} elseif (!is_array($result)) {
  $result1 = utf8_decode($result);
} else {
  $result1 = $result;
}
print_r($result1);
echo '</pre>';
}
}

echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';

}else
echo "Usuario Invalido";
} }



?>




server.php


代码: 全选



<?php require_once('lib/nusoap.php');
require_once('config.php');



class Cliente{
         public function __construct(){

         }
           public function cadastroWebService($dados){


$nome = $dados["full_name"];
$cpf = $dados["cpf"];
$data_nasc = $dados["dat_nascimento"];
$email = $dados["email"];

$sql = mysql_query("insert into ***(full_name, email, cpf, data_nascimento) values(\"$nome\", \"$email\", \"$cpf\", \"$data_nasc\")") or die(mysql_error());




if($sql){

return "Cadastrado com sucesso";

}
          }
}




$server = new soap_server();
$server->debug_flag = true;

//Configuração do Wsdl e registro das classes

$server->configureWSDL('server.validalogin', 'urn:server.validalogin');

$server->wsdl->schemaTargetNameSpace='urn:server.validalogin';



$server->configureWSDL('server.cadastrar', 'urn:server.cadastrar');

$server->wsdl->schemaTargetNameSpace='urn:server.cadastrar';


$server->register('cadastrar', array('entrada'=>'tns:arrCadastro'),                   array('return'=>'xsd:string'),
'urn:MeuNameSpace',
'urn:MeuNameSpace#cadastrar',
'rpc',
'encoded',
''
); $server->register('validalogin', array('login' => 'tns:Login'),   array('return'=>'xsd:string'),
'urn:server.validalogin',
'urn:server.validalogin#validalogin',
'rpc',
'encoded',
'Retorna se o login foi feito ou não'
); //Criação dos array's de retorna do WS
$server->wsdl->addComplexType('arrCadastro', 'complexType', 'struct', 'all','',
array(
  'full_name'=>array('name'=>'full_name','type'=>'xsd:string')
  ,'email'=>array('name'=>'email','type'=>'xsd:string')
  ,'dat_nascimento'=>array('name'=>'dat_nascimento','type'=>'xsd:string')
  ,'cpf'=>array('name'=>'cpf','type'=>'xsd:string')
)
);



$server->wsdl->addComplexType(
        'Login',
        'complexType',
        'struct',
        'all',
        '',
        array(
                'usuario' => array('name' => 'usuario', 'type' => 'xsd:string'),
                'senha' => array('name' => 'senha', 'type' => 'xsd:string')
         )
);




//Função para cadastro no banco;

function cadastrar($dados=array()){
$objCliente = new Cliente();
if($objCliente)
  $id = $objCliente->cadastroWebService($dados);

return $id;
}


function validalogin($login){



$server->requestHeaders;


$usuario = $login["usuario"];
$senha = $login["senha"];


$sql = mysql_query("select * from *** where usuario = \"$usuario\" and senha=\"$senha\"");

if(mysql_num_rows($sql) > 0){

$status = 'yes';
} else{
$status = 'no';
}




}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);



?>


头像

gernani

  • 帖子: 1
  • 注册: 周五 12月 13, 2013 5:21 pm

Re: Nusoap - Header Authentication

XainPro » 周六 12月 14, 2013 1:09 pm

http://www.php.net/manual/en/soapheader.soapheader.php
头像

XainPro

  • 帖子: 3933
  • 注册: 周五 2月 17, 2012 8:10 pm


+ 发表回复

分页: 1 / 1