Como eu faço este exemplo FBA autenticação ASP WebDAV em PHP?
-
22-07-2019 - |
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.
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!
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.