Quyền MANAGE_ACCOUNTS có nghĩa là gì?


18

Thỉnh thoảng tôi đọc được rằng MANAGE_ACCOUNTS Cần có sự cho phép (thực ra nó được gọi là "KONTEN HINZUFÜGEN ODER ENTFERNEN" khi tôi có một điện thoại Đức. Tôi đoán văn bản bên dưới là "Thêm hoặc xóa tài khoản, tạo tài khoản, sử dụng mật khẩu tài khoản trên thiết bị "bằng tiếng Anh).

Tôi đang hỏi câu hỏi này vì tôi muốn cài đặt Ứng dụng GitHub .

Tôi nghĩ rằng tôi đã tìm thấy một câu hỏi rất giống mà tôi muốn đưa vào đây:

  1. Điều đó có nghĩa là họ có thể tạo tài khoản?
  2. Tại sao Amazon (ứng dụng Kindle) / GitHub thậm chí cần điều này?
  3. Có rủi ro nào không?

Tôi cũng đã tìm thấy lời giải thích của Người bảo vệ, tại sao họ yêu cầu một số quyền: Guardian.co.uk/mobile/insideguardian/android-app-permissions Nhưng tôi muốn có câu trả lời chi tiết hơn, đặc biệt là khi gặp rủi ro tiềm ẩn .
Martin Thoma

Câu trả lời:


18

Nói tóm lại, GitHub đang sử dụng trình quản lý Hệ thống tài khoản nội bộ để lưu trữ thông tin đăng nhập GitHub của bạn. Điều này hoạt động chính xác giống như thêm tài khoản Google hoặc tài khoản Exchange. Về cơ bản, bạn đang đăng nhập bằng thông tin đăng nhập của mình và chúng được lưu trữ trong Trình quản lý tài khoản, điều này ngăn bạn khỏi phải nhập lại các thông tin đăng nhập này trong tương lai.

Điều này hữu ích nhất khi thông tin đăng nhập được sử dụng trên nhiều ứng dụng vì bạn chỉ phải đăng nhập một lần. Ví dụ: Google Chrome sẽ truy cập vào tài khoản của bạn thông qua Trình quản lý tài khoản thay vì buộc bạn phải đăng nhập lại (hộp thoại màu vàng bật lên ở phía dưới hỏi bạn có muốn đăng nhập bằng Tài khoản được giữ cục bộ trên điện thoại của mình không khi truy cập gmail hoặc người khác Trang web Google trên trình duyệt Google Chrome của bạn).

Điều đó có nghĩa là họ có thể tạo tài khoản?

Họ có thể tạo tài khoản cục bộ trên điện thoại của bạn cho ứng dụng của họ (và chỉ ứng dụng của họ). Đây là một ví dụ về danh sách trên điện thoại của tôi:

Ảnh chụp màn hình
Ảnh chụp màn hình (Bấm vào ảnh cho biến thể lớn hơn)

Tại sao Amazon (ứng dụng Kindle) / GitHub thậm chí cần điều này?

Nó đơn giản hóa thông tin đăng nhập trong Android. Đó là phương pháp được đề xuất để làm điều này.

Có rủi ro nào không?

Không nên có. Nếu một ứng dụng sử dụng AccountManager và nói, muốn sử dụng tài khoản Google của bạn, thì nó sẽ phải yêu cầu bạn cho phép một cách rõ ràng vì nó cần một mã thông báo xác thực để sử dụng tài khoản đó. Xem thêm thông tin về tài liệu SDK .


3
Khi không có rủi ro, tại sao mọi APP không được phép sử dụng trình quản lý tài khoản theo mặc định?
Martin Thoma

1
@Moose đó là một câu hỏi hay. Là một nhà phát triển Android, tôi không có kinh nghiệm sử dụng AccountManager, nhưng tôi tin rằng câu trả lời chính xác là về mặt kỹ thuật cho phép bạn cố gắng truy cập bất kỳ tài khoản nào được liệt kê trên điện thoại của mình (mặc dù vậy vẫn nên xin phép để cho phép truy cập vào tài khoản đó được sử dụng lần đầu tiên, theo như tôi biết)
Bryan Denny

1
Tôi chỉ duyệt các tài liệu API. Về cơ bản, một ứng dụng sẽ liệt kê các tài khoản hiện có và nó có thể lọc chúng theo loại, ví dụ: "tất cả tài khoản google". Nếu một tài khoản bị thiếu, nó sẽ tạo một tài khoản. Những hành động này yêu cầu quyền GET_ACCOUNTS và MANAGE_ACCOUNTS. Tuy nhiên (!), Dường như không có gì hạn chế các ứng dụng sử dụng bất kỳ tài khoản nào họ thích, ví dụ như mạo danh bạn trên tài khoản google thay vì tài khoản github của bạn. Rõ ràng các ứng dụng thậm chí có thể lấy mật khẩu tài khoản, nếu nó được lưu trong trình quản lý tài khoản. Nếu đó là sự thật, có một rủi ro lớn cho những quyền đó. Bạn phải hoàn toàn tin tưởng vào tác giả ứng dụng.
deepc

Đợi một chút, @BryanDenny: Bạn nói sẽ không có rủi ro. Nhưng không được phép "thêm hoặc xóa tài khoản" có nghĩa là một ứng dụng như vậy có thể xóa bất kỳ tài khoản nào được thiết lập khỏi thiết bị không? Điều gì ngăn nó đặt mật khẩu khác trên một số tài khoản khác (ví dụ: "khóa" cho "quá nhiều lần thử" sau đó)? Trong khi tôi thấy các yêu cầu, tôi bỏ lỡ lớp bảo mật được chỉ ra (ví dụ: người dùng phải xác nhận các thay đổi đó bằng cách nào đó hoặc có thể giới hạn nó trong một tài khoản / loại nhất định). Có một điều như vậy? Tôi không bao giờ nhận thấy bất kỳ "cửa sổ bật lên" liên quan hoặc tương tự.
Izzy

8

Để quản lý tài khoản, Android sử dụng một số quyền; một số trong số họ dễ bị hiểu lầm. Một lời giải thích rất hay về việc sử dụng tài khoản có thể được tìm thấy trong câu trả lời của Dan về câu hỏi Ứng dụng có thể làm gì với TÀI KHOẢN SỬ DỤNG TÀI KHOẢN trên sự cho phép của DEVICE . Hãy để tôi thử tổng hợp các quyền liên quan và ý nghĩa của chúng:

  • ACCOUNT_MANAGER : Quyền này được dành riêng cho các ứng dụng hệ thống. Người quản lý tài khoản là dịch vụ làm việc đằng sau hậu trường và chăm sóc mọi thứ hoạt động như mong đợi.
  • AUTHENTICATE_ACCOUNTS : Một ứng dụng sử dụng giấy phép này thường cung cấp một giao diện để đối phó với một loại tài khoản (không được biết đến với hệ điều hành Android được cài đặt sẵn), chẳng hạn như Dropbox. Khi xuất xưởng, Android không biết cách đăng nhập vào Dropbox và cách xử lý tài khoản Dropbox - vì vậy ứng dụng Dropbox cung cấp cơ chế. Ngoài ra, "trình xác thực tài khoản" có thể hạn chế các hành động mà ứng dụng có thể thực hiện với tài khoản (do đó, ví dụ như có thể quản trị việc này thông qua một số giao diện web được cung cấp bởi dịch vụ).
  • GET_ACCOUNTS : Lấy danh sách các tài khoản khả dụng. Bằng cách này, một ứng dụng muốn sử dụng Dropbox để lưu trữ có thể kiểm tra xem tài khoản phù hợp có khả dụng hay không. Nó phải xác minh điều này trước khi sử dụng nó.
  • MANAGE_ACCOUNTS : Tài liệu API không rõ ràng về quyền này. Nhưng theo câu trả lời của Bryans , một ứng dụng chỉ có thể xóa / sửa đổi tài khoản do chính nó tạo ra. Tất nhiên nó có thể tạo bất kỳ tài khoản mới và quản lý nó.
  • USE_CREDENTIALS : Ứng dụng này có thể sử dụng "thông tin đăng nhập" để đăng nhập vào tài khoản. Trong hầu hết các trường hợp, "thông tin đăng nhập" chỉ có nghĩa là trình xác thực tương ứng tạo ra một mã thông báo phù hợp và trao lại (mặc dù vậy, làm thế nào để đối phó với điều đó được để lại cho trình xác thực). Khi sử dụng tài khoản lần đầu tiên, Trình quản lý tài khoản cần đảm bảo người dùng được hỏi liệu anh ta có cho phép điều này không. Một lần nữa, câu trả lời của Dan giải thích tốt phần này.

Tôi hy vọng tôi đã có thể làm sáng tỏ một số. Đây cũng là điều khiến tôi lo lắng, vì vậy tôi mất hai ngày để nghiên cứu về nó. Nếu tôi có điều gì đó sai, xin vui lòng chỉ ra trong các ý kiến ​​để tôi có thể sửa nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.