2010-08-11 4 views
1

Nous mettons actuellement en œuvre un nouveau serveur OpenSSO. Le serveur est sur un serveur différent du serveur Web et j'ai de la difficulté à obtenir l'authentification sur notre serveur Web PHP.Authentification PHP OpenSSO

Le jeu de cookies avec openSSO Token s'appelle iPlanetDirectoryPro. Ceci est défini à partir de authServer.company.com. J'ai besoin de lire ceci depuis webserver.company.com et d'envoyer une demande HTTPRequest à authserver.company.com pour récupérer les attributs de ce jeton OpenSSO.

Actuellement mon code ressemble à ceci mais il ne fonctionne pas, je suspecte parce que je ne lis pas correctement le cookie.

$url = 'http://authServer.company.com:8080/opensso/identity/attributes'; 
$r = new HttpRequest(); 
$r->setURL($url); 
$r->setMethod(HTTP_METH_POST); 
$valarray = array(
    'Host' => 'authServer.company.com', 
    'Content-Type' => 'application/x-www-form-urlencoded', 
    'Cookie' => "iPlanetDirectoryPro=$_COOKIE[iPlanetDirectoryPro]" 
    ); 
$r->addHeaders($valarray); 
var_dump($r); 
var_dump($valarray); 
# 
# request 
# 
print "<br/>"; 
print "<b>what i'm saying to the server</b>"; 
print "<pre>"; 
#print "iPlanetDirectoryPro cookie: $_COOKIE[iPlanetDirectoryPro]"; 
print $r->getRawRequestMessage(); 
print "</pre>"; 

print "iPlanetDirectoryPro cookie: $_COOKIE[iPlanetDirectoryPro]"; 
$r->send(); 

# 
# response 
# 
print "<b>what the server is telling me</b>"; 
print "<pre>"; 
$response_body = $r->getResponseBody(); 
print $response_body; 
print "</pre>"; 

Des idées à ce sujet? Est-ce que je vais dans le mauvais sens?

Mise à jour - La ligne de fond que j'ai trouvée était le serveur ne pouvait tout simplement pas lire le cookie car il venait d'un autre serveur. En tant que travail aronud j'ai implémenté une API REST qui permet à l'utilisateur de soumettre une page de connexion à partir du serveur web. Son envoyer à l'AuthServer qui renvoie une réponse. La réponse devrait normalement être un jeton sauf si elle est invalide. Si c'est un jeton, un nouveau cookie est créé avec le jeton afin que les applications puissent ensuite utiliser ce jeton pour communiquer avec le serveur d'authentification, mais le cookie réside sous le domaine des serveurs Web

+0

Vous n'êtes pas développer avec le rapport d'erreurs tourné sur toute la hauteur, êtes-vous? Veuillez le faire - il y a au moins deux erreurs de niveau notice dans votre code qui peuvent poser problème. De plus, quelle classe de requête HTTP utilisez-vous? – Charles

+0

J'utilise la classe PECL HTTPRequest. Je reçois un retour du serveur mais c'est un 401 Token est NULL – CogitoErgoSum

Répondre

0

Évidemment, le jeton 401 est nul indique que vous ne pas envoyer le jeton avec la requête (ou qu'OpenSSO ne peut pas l'extraire de la requête). Si je suppose que vous obtenez avec succès le cookie de la demande du client, je vous suggère de passer la valeur du cookie en tant que param plutôt que comme en-tête pour commencer.

le paramètre serait subjectid = valeur de jeton.

Je vous recommandons de tester avec boucle pour obtenir la forme de la demande droite - puis modifiez votre code pour correspondre à la demande de boucle réussie

Questions connexes