HTTP Basic Authentication, предадено на различен поддомейн

Опитвам се да предам основно HTTP удостоверяване от един поддомейн на друг, за да не искам хората да влизат два пъти.

Първият поддомейн поддържа PHP, а вторият е ASP приложение. Приложението ASP иска подкана за основно HTTP удостоверяване (веднъж изпратено, те имат достъп до уеб приложението), но целта ми е да го направя така, че да принуждава правилното влизане, така че да не подканва потребителя и той да има достъп до мрежата приложение веднага.

От страна на PHP опитах следното:

$base64value = base64_encode($value);
setcookie("Authorization",$base64value, time()+3600*24);

Също така успешно получих удостоверяване на заглавката, но изглежда не го предава на следващата страница, дори когато има същата стойност

header('WWW-Authenticate: Basic realm="'.$base64value.'"');

Също така се опитах да настроя домейна с бисквитката на безуспешно. Вярно ли е, че не можете да преминете HTTP Basic Authentication чрез бисквитка? Изглежда като 2 различни техники.


person C- Pres    schedule 05.05.2011    source източник


Отговори (3)


Основното удостоверяване използва HTTP Header Authorization, който уеб клиентът изчислява, а не бисквитка. Така че да, не можете да предадете удостоверяване с тази техника.

Трябва да преработите удостоверяването. Можете да разгледате обратно проксииране на един от сайтовете зад другия или да настроите CAS услуга.

person Anders Lindahl    schedule 05.05.2011

Вие не искате setcookie; копирането на заглавката за удостоверяване трябва да е всичко, от което се нуждаете:

header('Authorization: " . $_SERVER['AUTHORIZATION']);

Кажете ми дали това работи.

РЕДАКТИРАНЕ: О. Забравете това. Мислех, че си прокси. Да, нищо не може да се направи по въпроса: не можете да повлияете на заглавката за оторизация за втори домейн от страна на сървъра на първия домейн.

person Femi    schedule 05.05.2011

Можете да генерирате всички връзки с удостоверяване, ако потребителят вече е влязъл:

<a href="https://<?php if (isset($_SERVER['PHP_AUTH_USER'])) {
    echo $_SERVER['PHP_AUTH_USER'] . ":" . $_SERVER['PHP_AUTH__PW'] . "@";
?>subdomain.example.com/some/path/resource">Resource</a>

Горното не е тествано, но идеята е да изпратите идентификационните данни в URL адреса по следния начин:

https://user:[email protected]/path/to/resource

Красотата е, че дори не сте ограничени до поддомейни. Мога да измисля много хитри начини за автоматизиране на това пренаписване на URL адреси, така че да не е необходимо да го правите ръчно за всяка връзка във вашия уебсайт.

person Paulo Scardine    schedule 15.03.2018