Pergunta

Eu preciso ter PHP autenticar em um servidor de troca. Uma vez capaz de se conectar com sucesso a ele, eu vou ter de solicitações de gravação WebDAV no PHP para que eu possa extrair dados do servidor de troca e usá-lo em uma aplicação web.

Seria um tanto simples, exceto que o servidor Exchange 2003 tem autenticação baseada em formulários (FBA) ativado. Com FBA ligado Eu acredito que eu sou supor para fazer o que o abaixo (ver link) artigo do blog diz. Meu problema é que eu preciso de ajuda para converter suas instruções para ASP para PHP.

http: / /blogs.msdn.com/webdav_101/archive/2008/12/12/webdav-fba-authentication-sample-explained.aspx

Alguém entender os detalhes do que ele está descrevendo este artigo? Qualquer visão ajudaria.

Mais informações específicas, se necessário:? Estou confuso a respeito de como configurar o pedido POST (Quero dizer, quando você dados normalmente POST para um formulário, não é normalmente carregar a página sua postagem para Em suas instruções, ele diz para publicá-la em /exchweb/bin/auth/owaauth.dll. Como isso funciona?)

Eu também estou confuso a respeito de como fazer a 3ª etapa listada: 3.) WebReq.KeepAlive e AllowAutoRedirect deve ser definida como True, a pedido

Além disso, eu poderia realmente usar alguma ajuda detalhando como levar os dados post e colocá-lo em um cookie em PHP.

Agradecemos antecipadamente por qualquer ajuda fornecido!

Foi útil?

Solução

Eu acredito que a melhor maneira de fazer isso é através de onda. ( http://ca.php.net/curl )

Na página ligada, o primeiro exemplo é uma boa classe para uso (Eu usei-o para auto-login em outros sites)

Ela deve ter KeepAlive (cabeçalho) e redirecionamento por padrão (curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);)

Você vai precisar para assegurar o webservice pode criar / modificar cookie.txt tente:

$cc = new cURL();
$cc->post('http://www.yourexchange.com','destination=https%3A%2F%2F' . $strServerName . '%2Fexchange%2F' . $strUserName . '%2F&username=' . $strDomain . '%5C' . $strUserName . '&password=' . $strPassword . '&SubmitCreds=Log+On&forcedownlevel=0&trusted=0'); 

A descrição acima é uma tradução rápida a partir da informação na página que você ligado a, pode ser necessário o uso urlencode () em suas variáveis ??se houver caracteres especiais. Uma vez que as obras acima com sucesso, você pode usar

$page=$cc->get('http://www.yourexchange.com/?whatever=youneed');

A $ página irá conter o resultado de cadeia a partir do get (ele envia o cookie armazenado no arquivo de texto sobre este pedido), então você pode usar a expressão regular para obter o que você precisa.

Isto deve chegar muito perto do que você precisa.

Outras dicas

Parece que o arquivo de texto é realmente chamado "cookies.txt". Você pode criar um arquivo de texto em branco com este nome e enviá-lo para o mesmo diretório. No seu cliente ftp que você deve ser capaz de definir permissões, acredito que 777 é o código de permissão que você precisa. Se você não pode simplesmente entrar na tentativa código de verificação de permissão todas as caixas para dar todas as permissões.

re: último post,

que é correto, onde o script é executado, é basicamente um cliente eo arquivo de cookie é uma maneira simples de armazenar o cookie para facilitar a reutilização.

Chain,

Sim, isso está se referindo a um arquivo chamado cookies.txt. (Nota: "cookies" com um "S") na mesma pasta que o curlclass.php arquivo de código

cURL usa isso para armazenar e enviar cookies em solicitações subseqüentes. Você está correto em sua suposição de que o servidor web executando o script PHP está atuando como o cliente; Basicamente, é a autenticação no servidor Exchange através da simulação de um POST para o formulário de login, e depois salvar o cookie e enviá-lo com cada pedido, assim como um navegador faria.

Criar a cookies.txt arquivo e definir as permissões para que o usuário que está executando a instância do Apache pode escrever para o arquivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top