it-swarm-vi.com

Kỹ thuật xác thực api web

Chúng tôi có khung dịch vụ web asp.net MVC để phục vụ xml/json cho mọi người Nhận yêu cầu nhưng đang vật lộn để tìm ra cách tốt nhất (nhanh chóng, dễ dàng, tầm thường cho người dùng mã hóa bằng javascript hoặc OO = ngôn ngữ) để xác thực người dùng. Không phải dữ liệu của chúng tôi nhạy cảm hay gì cả, chúng tôi chỉ muốn người dùng đăng ký để chúng tôi có thể có địa chỉ email của họ để thông báo cho họ về những thay đổi và theo dõi việc sử dụng.

Trong lần thử trước, chúng tôi đã có tên người dùng trong URI và sẽ chỉ đảm bảo rằng tên người dùng tồn tại và tăng các bảng db với việc sử dụng. Điều này là siêu cơ bản nhưng chúng tôi nhận thấy mọi người sử dụng bản demo làm tên người dùng, v.v. vì vậy chúng tôi cần nó phức tạp hơn một chút.

Những kỹ thuật xác thực có sẵn? Những người chơi chính sử dụng/làm gì.

26
Steve

Tôi đã hỏi câu hỏi đó trên StackOverflow và bạn có thể đọc nó ở đây . Cũng xem câu trả lời của tôi cho câu hỏi của riêng tôi. Đó là về xác thực chính xác mà không phải chuyển mật khẩu cho từng yêu cầu và không có SSL hoặc Mã hóa. Chỉ cần băm đơn giản.

10
user2567

Video này là một cách thú vị khi sử dụng khóa API với dịch vụ WCF/REST của bạn. .

3
Tangurena

Tôi lấy nó bằng cách sử dụng phòng thu trực quan. Nếu bạn sử dụng so với khung 2010 với khung 4.0, bạn có thể kiểm tra mẫu "WCF REST Dịch vụ với Xác minh khóa API" trong so với năm 2010.

0
KinGBin

Tôi luôn sử dụng xác thực HTTP cho các dịch vụ web. Việc xác thực sẽ được xử lý bởi máy chủ web của bạn, có khả năng IIS trong trường hợp của bạn. Sau đó, bạn sẽ định cấu hình IIS để xác thực với cơ sở dữ liệu của bạn, cửa hàng LDAP, hoặc tương tự.

Sau đó, bạn sẽ truy cập tên người dùng thông qua thuộc tính Người dùng.Identity.Name

CHỈNH SỬA : Ví dụ xác thực JQuery:

/* I found that providing the username and password both in the
   the arguments and in the url parameter seems to have better compatibility,
   if it works well for you, it is highly advisable to remove the 
   user/pass from the url */

function doLogin (){
  $.ajax({
    username: $('#username').val(),
    password: $('#password').val(),
    url: 'https://'+$('#username').val()+':'+$('#password').val()+'@api.example.com',
    dataType: 'jsonp',
    context: $('#result'),
    success: function(d) { $(this).html(d); $(location).attr('href','https://api.example.com/success'); }
    });
    return false;
}
0
ewindisch