2009-11-30 35 views
5

Tôi có thể làm cho trình duyệt buộc phải xác thực bằng thẻ thông minh, ví dụ như thẻ ID khi tệp php được bảo vệ bằng SSLVerifyClient trong confache conf.Cách làm cho ứng dụng php yêu cầu xác thực thẻ thông minh

Bây giờ tôi cần hiển thị index.php thường mà không yêu cầu xác thực thẻ thông minh và đôi khi cùng một trang này phải được người dùng xác thực.

doStuff(); 
if ($needed==1) 
    authenticateUser(); 
doMoreStuff(); 

Điều gì phải xác thựcUser() chứa để gọi trình duyệt yêu cầu mã pin thẻ thông minh?

Trả lời

4

Bạn đang pha trộn mọi thứ một chút.
authenticateUser(); chạy trên máy chủ, trong khi xác thực xảy ra trên máy khách. Bạn không thể dừng ở giữa việc chạy một tập lệnh PHP để xác thực ứng dụng khách và sau đó tiếp tục chạy tập lệnh PHP.

Là một giải pháp cho câu hỏi của bạn, điều này có thể làm việc trong trường hợp của bạn:

if(authenticationNeeded) 
{ 
    // redirect to a page that requires authentication that does what index was supposed to do. 
    redirect('index_ssl.php'); 
} 

Bằng cách sử dụng .htaccess bạn có thể xác định SSLVerifyClient require chỉ cho một số các thư mục/tập tin.
Điểm mấu chốt là: máy chủ web của bạn (Apache trong trường hợp này) yêu cầu chứng chỉ ứng dụng để cấp quyền truy cập vào bất kỳ thư mục/tệp nào bạn chỉ định SSLVerifyClient require.

Tóm lại, không có cách nào để làm những gì bạn muốn. Bạn chỉ có thể có các tệp/thư mục yêu cầu hoặc không yêu cầu chứng chỉ ứng dụng khách. Không có cách nào để dừng ở giữa tệp PHP để yêu cầu chứng chỉ ứng dụng khách, nhưng bạn có thể chuyển hướng đến một chứng chỉ yêu cầu.

+0

ok. sau khi máy chủ web thực hiện xác thực, trong PHP có thể xác minh và/hoặc đọc bất kỳ dữ liệu nào từ chứng chỉ/xác thực ứng dụng khách không? – Massimo

Các vấn đề liên quan