Chính xác thì OAuth (Ủy quyền mở) là gì?


201

Chính xác thì OAuth (Ủy quyền mở) là gì?

Tôi đã lượm lặt được một số thông tin từ

Nhưng tôi muốn tìm hiểu và biết thêm. Tôi đang tìm kiếm thông tin về vòng đời. Tại sao hầu hết các mạng xã hội đều dựa vào giao thức mở này?

Nó sẽ trở thành một thực tế trong tương lai gần với các công nghệ khác nhau (ví dụ ASP.NET)?

Câu trả lời:


327

Chính xác thì OAuth (Ủy quyền mở) là gì?

OAuth cho phép thông báo cho nhà cung cấp tài nguyên (ví dụ: Facebook) rằng chủ sở hữu tài nguyên (ví dụ: bạn) cấp quyền cho bên thứ ba (ví dụ: Ứng dụng Facebook) truy cập vào thông tin của họ (ví dụ: danh sách bạn bè của bạn).

Nếu bạn đọc nó được nêu rõ ràng, tôi sẽ hiểu sự nhầm lẫn của bạn. Vì vậy, hãy đi với một ví dụ cụ thể: tham gia một mạng xã hội khác!

Giả sử bạn có tài khoản GMail hiện tại. Bạn quyết định tham gia LinkedIn. Thêm tất cả , rất nhiều bạn bè của bạn một cách thủ công là mệt mỏi và dễ bị lỗi. Bạn có thể chán ngấy một nửa hoặc chèn lỗi chính tả vào địa chỉ email của họ để nhận lời mời. Vì vậy, bạn có thể không muốn tạo một tài khoản sau khi tất cả.

Đối mặt với tình huống này, LinkedIn có Ý tưởng tốt (TM) để viết chương trình tự động thêm danh sách bạn bè của bạn vì máy tính hoạt động hiệu quả và hiệu quả hơn nhiều trong các nhiệm vụ dễ bị mệt mỏi và dễ bị lỗi. Vì việc tham gia mạng bây giờ rất dễ dàng, không có cách nào bạn có thể từ chối lời đề nghị như vậy, bây giờ thì sao?

Nếu không có API để trao đổi danh sách liên hệ này, bạn sẽ phải cung cấp cho LinkedIn tên người dùng và mật khẩu vào tài khoản GMail của mình, do đó cung cấp cho họ quá nhiều sức mạnh .

Đây là nơi OAuth xuất hiện. Nếu GMail của bạn hỗ trợ giao thức OAuth, thì LinkedIn có thể yêu cầu bạn cho phép họ truy cập danh sách liên hệ GMail của bạn.

OAuth cho phép:

  1. Các cấp độ truy cập khác nhau: chỉ đọc VS đọc-ghi. Điều này cho phép bạn cấp quyền truy cập vào danh sách người dùng của bạn hoặc quyền truy cập hai chiều để tự động đồng bộ hóa bạn bè LinkedIn mới của bạn với các liên hệ GMail của bạn.
  2. Truy cập mức độ chi tiết: bạn có thể quyết định chỉ cấp quyền truy cập vào thông tin liên hệ của mình (tên người dùng, e-mail, ngày sinh, v.v.) hoặc cho toàn bộ danh sách bạn bè, lịch và những gì không.
  3. Nó cho phép bạn quản lý quyền truy cập từ ứng dụng của nhà cung cấp tài nguyên. Nếu ứng dụng của bên thứ ba không cung cấp cơ chế hủy quyền truy cập, bạn sẽ bị kẹt khi họ có quyền truy cập vào thông tin của bạn. Với OAuth, có điều khoản để thu hồi quyền truy cập bất cứ lúc nào.

Nó sẽ trở thành một thực tế (tiêu chuẩn?) Trong tương lai gần?

Chà, mặc dù OAuth là một bước tiến đáng kể, nhưng nó không giải quyết được vấn đề nếu mọi người không sử dụng đúng cách. Chẳng hạn, nếu một nhà cung cấp tài nguyên chỉ cung cấp một cấp truy cập đọc-ghi cho tất cả các tài nguyên của bạn cùng một lúc và không cung cấp cơ chế để quản lý quyền truy cập, thì không có điểm nào cho nó. Nói cách khác, OAuth là một khung để cung cấp chức năng ủy quyền chứ không chỉ xác thực.

Trong thực tế, nó phù hợp với mô hình mạng xã hội rất tốt. Nó đặc biệt phổ biến đối với những mạng xã hội muốn cho phép "plugin" của bên thứ ba. Đây là một lĩnh vực mà việc truy cập vào các tài nguyên vốn đã cần thiết và cũng không đáng tin cậy (tức là bạn có ít hoặc không kiểm soát chất lượng đối với các ứng dụng đó).

Tôi đã không thấy nhiều công dụng khác trong tự nhiên. Ý tôi là, tôi không biết về một công ty tư vấn tài chính trực tuyến sẽ tự động truy cập vào hồ sơ ngân hàng của bạn, mặc dù về mặt kỹ thuật nó có thể được sử dụng theo cách đó.


6
Bạn đã làm cho nó dễ hiểu. Tôi có thể đã thay đổi dòng đầu tiên thành một cái gì đó như thế này thay vào đó. "OAuth cho phép thông báo cho nhà cung cấp tài nguyên (ví dụ: Gmail) rằng chủ sở hữu tài nguyên (ví dụ: bạn là người dùng gmail) cấp quyền cho bên thứ ba (ví dụ: tài khoản LinkedIn của bạn) truy cập vào thông tin của họ (ví dụ: danh sách liên hệ của bạn)." Cái mà bạn đã viết tức là Nhà cung cấp và bên thứ ba 'cả hai' là Facebook thật khó hiểu. Mặc dù nó giới thiệu một kịch bản thú vị, đó là Oauth cũng có thể được sử dụng trong nội bộ giữa các dự án khác nhau của công ty bạn. Đúng? Có phải đó là lý do tại sao bạn giới thiệu một phần giới thiệu phức tạp?
Mật ong

Theo hiểu biết của tôi, mục đích của OAuth là cấp quyền hạn chế thời gian cho ứng dụng của bên thứ ba thay mặt cho chủ sở hữu tài nguyên mà không chia sẻ thông tin đăng nhập. Tôi tò mò muốn biết liệu tôi có cần OAuth để sử dụng API được lưu trữ trên máy chủ ứng dụng của tôi từ ứng dụng di động không (không có bên thứ ba nào tham gia)?
Monish Kamble

Khi một bên đáng tin cậy ủy quyền cho tôi, điều đó có nghĩa là đó cũng là một cơ chế xác thực?
biến

245

Outh là gì?

OAuth đơn giản là một giao thức ủy quyền an toàn liên quan đến ủy quyền của ứng dụng bên thứ ba để truy cập dữ liệu người dùng mà không để lộ mật khẩu của họ. ví dụ. (Đăng nhập bằng fb, gPlus, twitter trên nhiều trang web ..) đều hoạt động theo giao thức này.

Bên liên quan

Giao thức trở nên dễ dàng hơn khi bạn biết các bên liên quan. Về cơ bản có ba bên liên quan: Nhà cung cấp oAuth, Khách hàng và Chủ sở hữu oAuth.

  • oAuth Client (Ứng dụng muốn truy cập thông tin đăng nhập của bạn)
  • Nhà cung cấp oAuth (ví dụ: facebook, twitter ...)
  • Chủ sở hữu (người có facebook, twitter .. tài khoản)

Làm thế nào nó hoạt động?

Tôi đã giả sử một kịch bản trong đó một trang web (stackoverflow) cần thêm đăng nhập bằng tính năng facebook. Do đó, facebook là Nhà cung cấp oAuth và stackoverflow là oAuth Client.

  1. Bước này được thực hiện bởi nhà phát triển ứng dụng . Lúc đầu, facebook (Nhà cung cấp oAuth) không biết gì về stackoverflow (oAuth Client) vì không có liên kết giữa chúng. Vì vậy, bước đầu tiên là đăng ký stackoverflow với trang web của nhà phát triển facebook . Điều này được thực hiện thủ công khi các nhà phát triển cần cung cấp thông tin của ứng dụng cho facebook như tên ứng dụng, trang web, logo, Url chuyển hướng (quan trọng). Sau đó stackoverflow được đăng ký thành công, đã có Id khách hàng, bí mật của khách hàng, v.v. từ facebook và đang hoạt động với OAUTH . nhập mô tả hình ảnh ở đây

    2. Bây giờ khi người dùng stackoverflow bấm vào đăng nhập bằng nút fb . Stackoverflow yêu cầu facebook với ClientId (fb sử dụng nó để nhận ra máy khách) và redirectUrl (fb sẽ quay lại url này sau khi thành công). Vì vậy, người dùng được chuyển hướng đến trang đăng nhập facebook. Đây là phần người dùng (chủ sở hữu) tốt nhất sẽ không cung cấp thông tin xác thực trên facebook cho stackoverflow.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

  1. Sau khi Chủ sở hữu cho phép Stackoverflow truy cập thông tin . Sau đó, Facebook chuyển hướng quay lại stackoverflow, cùng với authcode bằng cách sử dụng redirectUrl được cung cấp ở bước 2.
  2. Sau đó, danh bạ Stackoverflow với facebook cùng với thu được authcode để đảm bảo mọi thứ đều ổn.
  3. Chỉ sau đó facebook sẽ cung cấp mã thông báo truy cập vào stackoverflow. Sau đó, mã thông báo truy cập được sử dụng bởi stackoverflow để lấy lại thông tin của chủ sở hữu mà không cần sử dụng mật khẩu. Đây là toàn bộ động lực của oAuth, nơi các khoản tín dụng không bao giờ tiếp xúc với các ứng dụng của bên thứ ba.

Để biết thêm:

Video nhanh

Liên kết web


chắc chắn localhost cũng là một url và tại sao bạn không hết hạn và đăng kết quả ở đây.
Balman Rawat

2
yeah Bạn có thể sử dụng Địa chỉ IP làm URL chuyển hướng: redirect_uri = ' 127.0.0.1:4200 ' và tên miền OAuth phải là 127.0.0.1
Samson Maben

Nhưng email có nên giống nhau trên cả máy khách oAuth và nhà cung cấp oAuth để nó hoạt động không?
Rowayda Khayri

lời giải thích hay
JayD

OAuth 2 là giao thức Bảo mật, không phải giao thức Ủy quyền. Câu trả lời bắt đầu ở ghi chú sai.
Rajat

13

Đơn giản chỉ cần đặt OAuth là một cách để các ứng dụng có được thông tin đăng nhập vào thông tin của bạn mà không cần trực tiếp lấy thông tin đăng nhập của người dùng đến một số trang web. Ví dụ: nếu bạn viết một ứng dụng trên trang web của riêng bạn và muốn nó sử dụng dữ liệu từ tài khoản facebook của người dùng, bạn có thể sử dụng OAuth để nhận mã thông qua url gọi lại và sau đó sử dụng mã thông báo đó để thực hiện cuộc gọi đến API facebook để nhận được cuộc gọi của họ sử dụng dữ liệu cho đến khi mã thông báo hết hạn. Các trang web dựa vào nó bởi vì nó cho phép các lập trình viên truy cập dữ liệu của họ mà không cần người dùng phải tiết lộ trực tiếp thông tin của họ và truyền bá thông tin của họ trên mạng nhưng vẫn cung cấp mức độ bảo vệ dữ liệu. Nó sẽ trở thành phương pháp ủy quyền trên thực tế? Có lẽ, gần đây nó đã nhận được rất nhiều sự hỗ trợ từ Twitter, Facebook,


14
OAuth không phải là một quy trình xác thực mà là một quy trình ủy quyền.
André Caron

Tôi không ngụ ý rằng ứng dụng cần xác thực trực tiếp, nhưng người dùng xác thực với nhà cung cấp dịch vụ để ủy quyền cho một số bên thứ ba truy cập dữ liệu người dùng mà tôi nghĩ ...
ameer

Tôi đã thêm độ chính xác vì OpenID đặc biệt nhắm vào xác thực được ủy quyền (sử dụng lại tài khoản bên ngoài hiện tại) với hy vọng mọi người ngừng chia sẻ thông tin đăng nhập chia sẻ của họ. OAuth đặc biệt nhằm mục đích ủy quyền (tái sử dụng tài nguyên) với hy vọng tạo điều kiện trao đổi thông tin.
André Caron

9

Oauth chắc chắn đang có được động lực và trở nên phổ biến trong các API doanh nghiệp. Trong thế giới điều khiển ứng dụng và dữ liệu, các doanh nghiệp đang phơi bày API ngày càng nhiều hơn với thế giới bên ngoài phù hợp với Google, Facebook, twitter. Với sự phát triển này, một tam giác xác thực 3 chiều được hình thành

1) Nhà cung cấp API - Bất kỳ doanh nghiệp nào tiết lộ tài sản của họ bằng API, theo Amazon, Target, v.v. 2) Nhà phát triển - Người xây dựng ứng dụng di động / ứng dụng khác qua API này 3) Người dùng cuối - Người dùng cuối của dịch vụ được cung cấp bởi - cho biết người dùng đã đăng ký / khách của Amazon

Bây giờ điều này phát triển một tình huống liên quan đến bảo mật - (Tôi liệt kê một vài trong số những phức tạp này) 1) Bạn với tư cách là người dùng cuối muốn cho phép nhà phát triển truy cập API thay mặt bạn. 2) Nhà cung cấp API phải xác thực nhà phát triển và người dùng cuối 3) Người dùng cuối sẽ có thể cấp và thu hồi các quyền cho sự đồng ý mà họ đã đưa ra 4) Nhà phát triển có thể có mức độ tin cậy khác nhau với nhà cung cấp API, trong mức độ cấp phép cho cô ấy là khác nhau

Oauth là một khung ủy quyền cố gắng giải quyết vấn đề được đề cập ở trên theo cách tiêu chuẩn. Với sự nổi bật của API và Ứng dụng, vấn đề này sẽ ngày càng trở nên phù hợp hơn và bất kỳ tiêu chuẩn nào cố gắng giải quyết nó - dù là hay bất kỳ điều gì khác - sẽ là điều cần quan tâm với tư cách là nhà cung cấp / nhà phát triển API và thậm chí là người dùng cuối!


9

OAuth ( O pen Auth orization) là một tiêu chuẩn mở cho giao thức cấp / truy cập truy cập. Nó được sử dụng như một cách để người dùng Internet cấp cho các trang web hoặc ứng dụng quyền truy cập vào thông tin của họ trên các trang web khác nhưng không cung cấp cho họ mật khẩu. Nó không đối phó với xác thực .

Hoặc là

OAuth 2.0 là một giao thức cho phép người dùng cấp quyền truy cập hạn chế vào tài nguyên của họ trên một trang web, đến một trang web khác mà không phải tiết lộ thông tin đăng nhập của họ.

  • Tương tự 1: Nhiều chiếc xe sang trọng ngày nay đi kèm với một chìa khóa valet. Đó là một chìa khóa đặc biệt mà bạn cung cấp cho nhân viên đỗ xe và không giống như chìa khóa thông thường của bạn, sẽ không cho phép chiếc xe lái xe hơn một hoặc hai dặm. Một số phím valet sẽ không mở thân cây, trong khi một số khác sẽ chặn truy cập vào sổ địa chỉ điện thoại di động trên máy bay của bạn. Bất kể những hạn chế nào mà khóa valet áp đặt, ý tưởng này rất thông minh. Bạn cung cấp cho ai đó quyền truy cập hạn chế vào xe của bạn bằng một phím đặc biệt, trong khi sử dụng khóa thông thường của bạn để mở khóa mọi thứ. src từ auth0

  • Tương tự 2: Giả sử, chúng tôi muốn điền vào mẫu đơn đăng ký tài khoản ngân hàng. Ở đây, Oauth hoạt động như, thay vì điền vào mẫu của người nộp đơn, ngân hàng có thể điền vào mẫu bằng Adhaar hoặc hộ chiếu.

    Ở đây có ba thực thể sau đây có liên quan:

    1. Người nộp đơn tức là chủ sở hữu
    2. Tài khoản ngân hàng là khách hàng OAuth, họ cần thông tin
    3. Adhaar / Hộ chiếu ID là Nhà cung cấp OAuth

7

OAuth là tất cả về ủy quyền ủy quyền (chọn ai đó có thể thực hiện Ủy quyền cho bạn). Lưu ý rằng Xác thực và Ủy quyền là những thứ khác nhau. OAuth là Ủy quyền (Kiểm soát truy cập) và nếu bạn muốn triển khai Xác thực (xác minh ID), giao thức OpenID có thể được sử dụng trên đầu trang của OAuth.

Tất cả các công ty lớn như Facebook, Google, Github, ... hiện nay đều sử dụng loại xác thực / ủy quyền này. Ví dụ: tôi vừa đăng nhập trên trang web này bằng tài khoản Google của mình, điều này có nghĩa là Stackoverflow không biết mật khẩu của tôi, nó nhận được trợ cấp từ Google nơi lưu mật khẩu của tôi (băm rõ ràng). Điều này mang lại rất nhiều lợi ích, một trong số đó là; Trong tương lai gần, bạn sẽ không phải tạo một số tài khoản trên mỗi trang web. Một trang web (mà bạn tin tưởng nhất) có thể được sử dụng để đăng nhập vào tất cả các trang web khác. Vì vậy, bạn sẽ chỉ phải nhớ một mật khẩu.


2

OAuth đã xảy ra khi chúng tôi đăng ký tài khoản SO bằng nút Facebook / Google.

  1. Ứng dụng (SO) chuyển hướng người dùng đến URL ủy quyền của nhà cung cấp. (Hiển thị một trang web hỏi người dùng nếu họ muốn cấp quyền truy cập ứng dụng để đọc và cập nhật dữ liệu của họ).
  2. Người dùng đồng ý cấp quy trình đăng ký.
  3. Nhà cung cấp dịch vụ chuyển hướng người dùng quay lại ứng dụng (SO), chuyển mã ủy quyền làm tham số.
  4. SO trao đổi mã cho một cấp quyền truy cập.

Nguồn: Nhà cung cấp dịch vụ OAuth1


Xin chào, tôi cần làm việc với API REST để cài đặt oAuth, thực sự tôi đang sử dụng Magento, Trong localhost, tôi đã cài đặt oAuth, trong máy chủ trực tiếp, làm thế nào tôi có thể, tôi đang sử dụng máy chủ VPS GoDaddy, có giúp được gì không? @john joe
Đá quý

@Rathinam hi, II xin giúp đỡ, nhưng đó là ngoài chuyên môn của tôi. Rất xin lỗi.
John Joe

Tôi có thể sử dụng API REST mà không có oAuth không? @ John Joe
Gem

@Rathinam vâng, điều đó phụ thuộc vào bạn
John Joe

1

OAuth là một tiêu chuẩn mở để ủy quyền, thường được sử dụng như một cách để người dùng Internet đăng nhập vào các trang web của bên thứ ba bằng tài khoản Microsoft, Google, Facebook hoặc Twitter của họ mà không để lộ mật khẩu.


2
Tôi nghĩ rằng bạn đã nhầm OAuth và OpenID
A23149577

0

OAuth là một giao thức được sử dụng từ Chủ sở hữu tài nguyên (facebook, google, tweeter, microsoft live, v.v.) để cung cấp thông tin cần thiết hoặc để cung cấp quyền ghi thành công cho hệ thống bên thứ ba (ví dụ trang web của bạn). Rất có thể không có giao thức OAuth, thông tin đăng nhập sẽ có sẵn cho các hệ thống phần thứ ba, đây sẽ là cách giao tiếp không phù hợp giữa các hệ thống đó.

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.