2012-09-18 35 views
5

Tôi đã nghiên cứu về khái niệm Oauth này và tôi vẫn còn rất bối rối về khái niệm này. Một trong những câu hỏi chính của tôi là làm cách nào để đăng ký bằng tài khoản google hoặc tài khoản twitter.Người dùng đăng ký với Oauth như thế nào?

Ví dụ: cho phép nói để đăng ký vào trang web của tôi, bạn phải cung cấp Tên người dùng/Mật khẩu/Email/GroupName. Nếu bạn đăng ký thông qua trang web của tôi, hơn bạn có thể cung cấp những trường đó rất dễ dàng. Tuy nhiên, giả sử người dùng muốn đăng ký thông qua google. Làm thế nào những lĩnh vực này sẽ cư trú?

Từ hiểu biết của tôi khi bạn đăng ký bằng thông tin đăng nhập google, bạn được chuyển hướng đến một trang trên trang web của tôi nơi bạn điền vào các trường bắt buộc. Tôi không chắc chắn nếu điều này là chính xác. Bất cứ ai có thể giúp tôi hiểu điều này nhiều hơn?

+0

Bạn đang nói về Oauth nào. Có những cái khác nhau, và nó cũng được coi là bị hỏng. – hakre

+0

Nếu bạn đang xác thực với Oauth, tại sao bạn cần tên người dùng và mật khẩu? Đối với Email và nhóm, bạn sẽ cần một trang đăng ký riêng. Với tài khoản Google, bạn có thể nhận địa chỉ email nhưng các tài khoản Oauth khác có thể không có sẵn. – mcrumley

+0

@hakra OAuth là * không * bị hỏng, nó có thể được sử dụng an toàn nếu được thực hiện đúng. Nó có nhược điểm và phức tạp của nó mặc dù, như hầu như mọi tiêu chuẩn mà có tài khoản của rất nhiều trường hợp sử dụng. –

Trả lời

6

Về cơ bản OAuth làm việc như thế này (tùy theo phiên bản những điểm này bao gồm nhiều bước):

  • Bạn chuyển hướng người dùng đến một nhà cung cấp, nơi ông đăng nhập vào
  • Người dùng được chuyển hướng trở về với bạn và bạn nhận được một access token

Sử dụng truy cập này thẻ sau đó bạn có thể yêu cầu các dữ liệu người dùng từ các nhà cung cấp. Thông thường, các nhà cung cấp cung cấp một cuộc gọi mà bạn có thể sử dụng để yêu cầu địa chỉ email của người dùng, tên đầy đủ và (tên nhà cung cấp cụ thể) id người dùng, nhưng đó không phải là một phần của OAuth.

Cách bạn sử dụng thông tin này để xử lý người dùng đó như thể anh ấy đã đăng nhập vào trang web của bạn sau đó hoàn toàn tự làm. Bạn có thể muốn tạo đối tượng người dùng mới ở bên cạnh mỗi khi bạn thấy một id người dùng mới.

+0

O tôi hiểu. Vì vậy, nếu im hiểu đúng, Sau khi người dùng đăng nhập bằng email/mật khẩu google của họ thì tôi phải chuyển hướng họ đến trang của riêng tôi nơi họ điền vào phần còn lại của thông tin xác thực? – user1436497

+0

@ user1436497 bạn có thể, nhưng điều đó sẽ tạo ra một UX xấu. – Mahn

0

Có một số khái niệm cơ bản cần một số rõ ràng trước khi người ta có thể hiểu cách đăng ký người dùng mới xảy ra bằng OAuth2. Đó là:

  • Resource Chủ đầu tư (Bạn, con người)
  • nhận dạng nhà cung cấp (Google, Facebook, Twitter, vv)
  • Resource Server (Tương tự như nhà cung cấp danh tính, hoặc một số dịch vụ khác)
  • Tài (những điều bạn muốn truy cập vào)
  • ứng dụng Client (ứng dụng mà bạn đang sử dụng để truy cập vào những điều)

Đối với đăng ký người dùng mới, bạn sẽ làm theo thứ cùng một chuỗi ứng dụng khách yêu cầu ủy quyền được cấp quyền truy cập vào tài nguyên. Điều này sẽ kích hoạt một trang đăng nhập, người dùng đăng nhập, mã ủy quyền được tạo ra (bởi IdP) và được gửi trở lại ứng dụng khách. Ứng dụng khách trao đổi mã này cho mã thông báo truy cập (một số ký mã hóa có liên quan, đọc tài liệu - về cơ bản cho phép ứng dụng khách xác minh nhận dạng riêng của nó).

Mã thông báo truy cập này sau đó được sử dụng để yêu cầu quyền truy cập vào tài nguyên - trong trường hợp này, hồ sơ người dùng mới. Đây có thể là tên, email, hình ảnh, v.v. Sử dụng tính năng này để tạo một hàng mới trong cơ sở dữ liệu hồ sơ ứng dụng khách của bạn. Tài khoản người dùng mới được tạo.

Sau đó, để đăng nhập tiếp theo, ứng dụng khách sẽ sử dụng mã thông báo truy cập này để xác thực cuộc sống với máy chủ Google Auth - và sau đó tạo phiên/cookie cục bộ để đăng nhập người dùng.

Hy vọng điều này là rõ ràng.

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