PHPFox'da geliştirilen bir web sitesinin kodundan yöntem ve kaynakları kullanmak istiyorum.'Token Tabanlı Kimlik Doğrulama', PHPFox'ta geliştirilen web sitesinin kaynaklarına (yani işlev ve veri) erişmek için nasıl güvenli bir şekilde uygulanır?
Temel olarak, iPhone/Android
'dan istek alırım, isteği alıp PHPFox kodundan ilgili işleve iletirim, yanıtı bu işleve geri alıp cihaza geri gönderirim.
Bu amaçla, İnce çerçeve kullanarak REST API'leri geliştirdim. Ancak şu anda karşı karşıya olduğum başlıca engelleyici, PHPFox web sitesinin kaynaklarına (yani işlev ve veri) erişmekte.
Web sitesinin kaynaklarına erişmek için 'Jeton Tabanlı Kimlik Doğrulama''u kullanarak kullanıcının kimliğini nasıl doğrulamalıyım.
Birisi bana yararlı bir çalışma örneği ile doğru yönde bana rehberlik edebilirse, benim için gerçekten yararlı olacaktır.
N.B. : 'Token Tabanlı Kimlik Doğrulamanın' önerilen uygulaması hızda çok güvenli ve hızlı olmalıdır. Güvenlik herhangi bir şekilde tehlikeye atılmamalıdır.
Kendi kendime denediğim kod aşağıdadır, ancak doğru ya da yanlış olup olmadığını bilmiyorum. Benim yaklaşımım doğru ya da yanlış. Lütfen birileri analiz edin ve bu konuda görüşlerinizi bildirin.
i Yani bir kullanıcı (genericPart + onun veriler kodlanmış) kendini onaylanmaktadır ve bir simge içeriyor dizisi alabilir, kullanıcının veri
define('SECRET_KEY', "fakesecretkey");
function createToken($data)
{
/* Create a part of token using secretKey and other stuff */
$tokenGeneric = SECRET_KEY.$_SERVER["SERVER_NAME"]; // It can be 'stronger' of course
/* Encoding token */
$token = hash('sha256', $tokenGeneric.$data);
return array('token' => $token, 'userData' => $data);
}
parametre olarak alır Bu fonksiyonu kullanmak bir simge oluşturmak için ve hisData kodlanmamış:
function auth($login, $password)
{
// we check user. For instance, it's ok, and we get his ID and his role.
$userID = 1;
$userRole = "admin";
// Concatenating data with TIME
$data = time()."_".$userID."-".$userRole;
$token = createToken($data);
echo json_encode($token);
}
Ardından kullanıcı kontrol etmek için beni onun belirteç + onun un-kodlanmış veri gönderebilir:
define('VALIDITY_TIME', 3600);
function checkToken($receivedToken, $receivedData)
{
/* Recreate the generic part of token using secretKey and other stuff */
$tokenGeneric = SECRET_KEY.$_SERVER["SERVER_NAME"];
// We create a token which should match
$token = hash('sha256', $tokenGeneric.$receivedData);
// We check if token is ok !
if ($receivedToken != $token)
{
echo 'wrong Token !';
return false;
}
list($tokenDate, $userData) = explode("_", $receivedData);
// here we compare tokenDate with current time using VALIDITY_TIME to check if the token is expired
// if token expired we return false
// otherwise it's ok and we return a new token
return createToken(time()."#".$userData);
}
$check = checkToken($_GET['token'], $_GET['data']);
if ($check !== false)
echo json_encode(array("secureData" => "Oo")); // And we add the new token for the next request
Doğru muyum?
Teşekkürler.
Sorunumun ilgisini gösterdiğim ve gerçekten 'Jeton Tabanlı Kimlik Doğrulama'nın ne olduğunu anlamamı sağladığınız için teşekkürler. Ama lütfen bana php-jwt'nin çalışma örneğini sıfırdan verebilir misiniz, böylece bunu sistemime kopyalayabileceğim. Kod, veritabanı tablosu oluşturma, PHP ve MySQL arasındaki bağlantı, daha sonra güvenlik belirteci oluşturma, mevcut oturum açmış kullanıcı için güvenlik belirtecinin geçerliliğini kontrol etme, vb. Her şeyi içermelidir. Bir seferde ve her kullanıcı için bu 'Token Tabanlı Kimlik Doğrulama' çalışmalıdır. TY. – user2839497
Lütfen soru bedenimin sonuna bir göz atın. Bir kod denedim. Doğru olup olmadığını kontrol edebilir misiniz? İşleri doğru mu yapıp yapmadım? – user2839497
İyileştirme alanı var ama hepsi doğru. Yapmanız gereken, jeton jenerasyonu ve doğrulama için php-jwt kullanmaktır. Ben çok daha iyi olacağım. Ama bu da tamamdır. – Techie