2016-05-12 35 views
5

Tôi đã trải qua các tài liệu Oauth2 và nghĩ rằng đó là loại bảo mật khôn ngoan, vì vậy tôi đã cố gắng triển khai thẻ JWT với một sơ đồ đặc biệt như trong hình cho ứng dụng di động giao tiếp với API web.Xác thực và ủy quyền ứng dụng với JWT

Lưu ý: tôi không thích ý tưởng thẻ làm mới Oauth2 vì chúng có thể bị đánh cắp và cho phép sử dụng song song (bởi người dùng hợp pháp và độc hại) trừ khi bạn thực hiện phát hiện hành vi trộm cắp bằng cách xoay chúng (làm mới mã thông báo làm mới theo yêu cầu) trong trường hợp này họ ở tất cả?

Làm thế nào dòng chảy auth hoạt động:

  1. Một người sử dụng đăng nhập vào với các thông tin được một JWT 20 phút tuổi thọ.
  2. Khi hết hạn, jwt được làm mới bằng cách nhấn vào kiểm tra db nếu danh sách đen (relogin) và nếu không kiểm tra xem nó có được sử dụng để tạo mã thông báo mới hay không.
  3. Nếu nó không bao giờ được sử dụng để làm mới nó được chấp nhận và sử dụng để cấp một mã thông báo truy cập cấp thấp.
  4. Nếu mã thông báo được sử dụng trước đó hoặc có người dùng + thiết bị + người dùng khác với cha mẹ cung cấp séc xác thực (mật khẩu hoặc mã khóa)
  5. Nếu được thông qua, séc này sẽ phát hành mã thông báo cấp một mới. và trẻ em trên db, giống như đăng nhập người dùng đầu tiên mới.
  6. Nếu màn hình khóa không hiển thị người dùng với màn hình đăng nhập.

Các câu hỏi là:

  1. lỗ hổng bảo mật có thể là gì? (Tôi đã tìm thấy hai trường hợp sử dụng: mã thông báo truy cập hợp lệ bị mất cắp kéo dài 20 phút giống như mã thông báo Oauth. Không bị mất thẻ nào ở đây.Và mã thông báo bị đánh cắp: người dùng không đăng nhập trong 7 ngày, mã thông báo bị đánh cắp và sử dụng cho đến khi người dùng đăng nhập lại hoặc chuỗi mã thông báo được sửa lại sau 3 tháng kiên trì - chính sách của chúng tôi - và hành vi trộm cắp này có cơ hội nhỏ vì mã thông báo phải bị chặn theo yêu cầu cuối cùng mà người dùng thực hiện trên ứng dụng, mỏng hơn là ăn cắp mã thông báo làm mới Oauth2)
  2. Trải nghiệm người dùng là gì vấn đề một người thu hút có thể gây ra trên các ứng dụng trong khi trên chương trình này?

jwt auth flow

Trả lời

0

OAuth2 refresh tokens không có nghĩa là để được sử dụng bởi khách hàng di động. Sử dụng mã thông báo làm mới yêu cầu thông tin đăng nhập của khách hàng, không thể lưu trữ an toàn trong ứng dụng dành cho thiết bị di động.

Mã thông báo làm mới được sử dụng từ các ứng dụng khách bảo mật (ví dụ: ứng dụng web phía máy chủ). Chúng thường được gia hạn khi được sử dụng (máy chủ gửi lại truy cập mới và mã thông báo làm mới mới). Ngược lại với mã thông báo truy cập, mã thông báo làm mới chỉ được gửi tới máy chủ ủy quyền chứ không phải máy chủ tài nguyên (API).

Về luồng xác thực của bạn. Bước 2 là liên kết IMO yếu. Bạn cho phép ứng dụng khách sử dụng mã thông báo đã hết hạn để tạo mã thông báo truy cập mới. Vì vậy, nếu tôi tìm thấy điện thoại của bạn và truy cập vào thiết bị, nó sẽ cho phép tôi nhận mã thông báo truy cập mới và mạo danh bạn.

Bạn có thể buộc khách hàng làm mới mã thông báo sau mỗi 15 phút, nhưng sau đó bạn phải xác định điều gì sẽ xảy ra nếu ứng dụng bị đóng hoặc thiết bị bị tắt? Có thể xác thực lại người dùng một lần nữa không?

+0

Trường hợp sử dụng của bạn: điện thoại bị đánh cắp sẽ khiến người dùng độc hại nắm giữ tất cả các ứng dụng đăng nhập liên tục và mạo danh bạn: facebook, google .... Vì vậy, lỗ này phổ biến tại sao có thu hồi thiết bị trên trang tổng quan ứng dụng. –

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