Ben bizim mevcut PHP web entegre gereken bir Java uygulaması var. Satıcı bize güvenli kimlik doğrulama ve tek oturum açma için izin vermek için bir sunucu tarafı yönlendirme yapmak istiyor, ama ben PHP bunu nasıl emin değilim. Aşağıdaki gibi satıcı iş akışını açıkladı:
- Kullanıcı bizim PHP sitesinde bir 'Open Application' linke tıkladığında
- PHP uygulama kimlik doğrulama parametreleri göndererek, Java uygulaması bir sayfa vurur
- Eğer başarılı olursa, PHP uygulama, bir 'yönlendirme' zorlar kullanıcının tarayıcısına, geri başlıklarını gönderir aksi PHP uygulaması bir hata görüntüler
Bu ne sağlayacak bizim PHP uygulaması güvenli bir Java uygulaması konuşmak için olabilir ve istemci kimlik doğrulama her türlü göndermek zorunda asla.
Kimden ne anlıyorum. NET ve Java inşa edilen bu yeteneği var, ama bunu yapmak için PHP bir yol bulamıyorum. Herhangi bir fikir?
UPDATE
Ben header ("Location: ...") kullanılarak bahsetmiyorum; bir yönlendirme yapmak için çalışır. Sadece gitmek için tarayıcı zorlar: bu sunucu tarafı yönlendirme ile Kicker uygulaması kimlik doğrulaması yapar ve istemci daha sonra header ("... Location") kullanarak oturum böylece geri istemciye tüm bu bilgileri gönderir olduğunu başka yerde.
UPDATE 2
autologin.php (kıvrılma yoluyla harici bir uygulama içine kullanıcı günlüğü taklit)
// The login 'form' is at login.php
$ch = curl_init('http://domain.local/login.php');
// We are posting 2 variables, and returning the transfer just so it doesn't dump out
// Headers are processed by the callback function processHeaders()
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'processHeaders');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=user&password=pass');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute curl, close the connection, and redirect the user to a 'restricted' page
$response = curl_exec($ch);
curl_close($ch);
header("Location: http://domain.local/restricted.php");
function processHeaders($ch, $header) {
// Dump the response headers to the client
header($header);
strlen($header);
}
login.php ('login' formunu içerir)
session_start();
if($_POST) {
if($_POST['username'] == 'user' && $_POST['password'] == 'pass') {
$_SESSION['auth'] = 1;
$_SESSION['token'] = md5(time());
} else {
echo 'Auth failed';
}
} else {
echo 'Invalid access type';
}
restricted.php (Kısıtlı sayfa)
session_start();
if($_SESSION['auth']) {
echo 'Secret Token: '.$_SESSION['token'];
} else {
echo 'Please log in';
}
Fikir kullanıcı sonuçta 'restricted.php' almak istiyor. 'Login.php' ne simüle etmek istediğiniz kullanıcı 'login.php' formunu doldurarak ve 'restricted.php' içine kullanıcı giriş olduğunu oturum açmak için gerekli kodu içerir.
Benim yerel testler (autologin.php isabet restricted.php ve gizli belirteç yazdırılır yönlendirir), ancak birlikte kod çalışma Yukarıdaki pasajları ben çapraz uygulama işe almak gibi olamaz. Uygulamalar aynı etki olacak (https://domain.com/myapp, https://domain.com:1234/vendorapp).
Ben sadece benim satıcı yaptıklarını bana ne kapalı gidiyorum, herhangi bir dilde daha önce hiç yapmadım. Görünüşe göre daha önce PHP ile ele ve ne yapmak hiçbir fikrim yok hiç.