OAUTH 2.0 | 官网直译.

以下是官网直译:https://oauth.net/

1. 首页

OAuth是一种开放协议(注:协议是公开的,任何人都可以按照协议的文
去实现该协议的通信,比如说OAuth协议,任何人都可以买到或者获得该
协议的完整说明,并去实现,而不需要支付授权费用,开放协议处于许多重
要系统的核心,互联网需要TCP/IP协议,Web需要HTTP,电子邮件需SMTP,
这些开放系统能够让开发者在上面建立应用程序), 允许用户让第三方应用
以安全且标准的方式获取该用户在某一网站,移动或者桌面应用上存储的
秘密的资源(如用户个人信息,照片,视频,联系人列表),而无需将用
户名和密码提供给第三方应用。

OAuth2.0授权框架允许第三方应用程序获得对HTTP服务的有限访问。

为消费者开发人员

如果你正在构建以下...

  • web applications
  • desktop applications
  • mobile applications
  • Javascript or browser-based apps (javascript或者基于浏览器的应用程序)
    OAuth是一种发布和受保护数据交互的简单方法。这也是一种更安全的方式让人们可以访问。为了节省你的时间,OAuth一直保持简单。
对于服务提供者开发人员

如果你支持以下...

  • web applications
  • mobile applications
  • server-side APIs(服务端APIS)
  • mashups(插件)
    如果你是在为用户存储受保护的数据,他们不应该在网络上散布密码以活得访问权。使用OAUTH来让用户访问他们的数据,同时保护他们的账户凭证。
入门指南(Getting Started)

下面是OAuth 2.0 的一些指南,它涵盖了理解和实现客户端和服务端的主题。

OAuth 2.0 Simplified(OAuth2.0简化)

OAuth2.0简化 是Aaron Parecki写的,是OAuth2.0的指南,专注于编写客户端,在介绍性的层面上给出了一个清晰的概述。

  • Roles: Applications, APIs and Users
  • Creating an App
  • Authorization: Obtaining an access token 授权,获取一个令牌
    • Web Server Apps
    • Single-Page Apps 单页面应用程序
  • Mobile Apps
  • Others
  • Making Authenticated Requests 制作身份验证的请求
  • Differences from OAuth 1.0 区别OAuth1.0
  • Authentication and Signatures 身份验证和签名
  • User Experience and Alternative Authorization Flows 用户体验和可选授权流
  • Performance at Scale 大规模集群的性能
  • Resources
OAuth 2.0 Servers (OAuth2.0服务)

OAuth2.0服务是由Aaron Parecki撰写的,由 Okta发布出版,是构建OAuth2.0服务的指南,其中包括许多细节,而不是规范的一部分。

  • Background
  • Definitions
  • OAuth 2.0 Clients
  • Client Registration
  • Authorization
  • Scope
  • Redirect URIs
  • Access Tokens
  • Listing Authorizations
  • Token Introspection Endpoint
  • The Resource Server
  • Creating Documentation
  • Differences Between OAuth 1 and 2
Code and Libraries(代码和库)

有很多不同语言的client和server库可以让您快速入门。

Books(书)

---您可以在OAuth2.0中找到一些优秀的 books。

Consulting(咨询,顾问)

找一个OAuth consultant 来帮助你的组织。

2. OAuth 2.0

OAuth 2.0

OAuth 2.0是用于授权的行业标准协议。OAuth 2.0取代了2006年创建的OAuth协议所做的工作。OAuth 2.0侧重于客户端开发人员的简单性,同时为web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流。该规范是在IETF OAuth WG中开发的。

问题,建议和协议更改应该在mailing list 中讨论。

OAuth 2.0 Core (核心)

  • OAuth 2.0 Framework - RFC 6749(框架)
  • Bearer Token Usage - RFC 6750 (不记名使用令牌)
  • Threat Model and Security Considerations - RFC 6819 (威胁模式和安全考虑)
OAuth 2.0 Extensions(扩展)

  • OAuth 2.0 Device Flow (设备流)
  • OAuth 2.0 Token Introspection - RFC 7662, to determine the active state and meta-information of a token (以确定一个令牌的活动状态和元信息)
  • PKCE - Proof Key for Code Exchange, better security for native apps(验证代码交换的关键,更好的本地应用程序安全性。)
  • Native Apps - Recommendations for using OAuth 2.0 with native apps (应用程序,使用OAuth 2.0与本地应用程序的推荐。)
  • JSON Web Token - RFC 7519 (JSON Web标记)
  • OAuth Assertions Framework - RFC 7521 (OAuth断言框架)
  • SAML2 Bearer Assertion - RFC 7522, for integrating with existing identity systems (与现有的身份系统集成)
  • JWT Bearer Assertion - RFC 7523, for integrating with existing identity systems (与现有的身份系统集成)

需要帮助整理这些规范,并弄清楚它们是如何应用于您的组织的开发计划的,找一个OAuth顾问。OAuth consultant

Community Resources (社区资源)

  • OAuth 2.0 Simplified(简化)
  • Books about OAuth (书)
  • OAuth 2.0 Servers - a guide to building OAuth 2.0 servers by Aaron Parecki (服务指南)
  • OAuth articles by Alex Bilbie(文章)
Protocols Built on OAuth 2.0 (基于OAuth 2.0构建的协议)

  • Open ID Connect
  • UMA
  • Green Button
  • Blue Button (obsolete)
Code and Services (代码和服务)

  • OAuth 2.0 Code and Services
Legacy (遗赠)

See more information on OAuth 1.0 and 1.0a.

3. Code

Code

下面是支持OAuth 2.0库和服务的集合。如果您想对这个页面做任何更改,您可以 edit this page.

Server Libraries (服务端库)

  • Java

  • MitreID (with OpenID Connect)

  • Apache Oltu

  • Spring Security OAuth

  • Apis Authorization Server (v2-31)

  • Restlet Framework (draft 30)

  • Apache CXF

  • Tokens: Java library for conveniently verifying and storing OAuth 2.0 service access tokens.

  • Light OAuth2 - The fastest, lightest and cloud native OAuth 2.0 microservices

  • PHP

  • PHP OAuth2 Server and Demo

  • PHP OAuth 2.0 Auth and Resource Server and Demo

  • PHP OAuth 2.0 (AS with SAML/BrowserID AuthN, with management REST API)

  • PHP OAuth2.0 for Silex and Demo

  • PHP OAuth2.0 for Symfony and Demo

  • Nette OAuth2 provider for Nette framework and Nette REST API bundle

  • Python

  • HHS OAuth2 Server (Healthcare Focused)

  • Python OAuth 2.0 Client + Server Library

  • Python Social Auth is an OAuth and OAuth2 client for a multitude of services.

  • Django OAuth Toolkit (DOT) is an OAuth2 Provider for Django built upon oauthlib

  • HHS OAuth2 Server a health-centric Django project based on DOT

  • Flask-OAuthlib is an OAuth2 Client/Provider for Flask built upon oauthlib

  • NodeJS

  • NodeJS OAuth 2.0 Provider

  • Mozilla Firefox Accounts. A full stack Identity Provider system developed to support Firefox Marketplace and other services

  • OAuth2orize: toolkit to implement OAuth2 Authorization Servers

  • Ruby

  • Rack::OAuth2 - OAuth 2.0 Server & Client Library in Ruby.

  • .NET

  • .NET DotNetOpenAuth

  • OAuthServer a simple OAuth server 2.0 developed in C# to provide OAuth authentication for Active Directory Users.

  • Thinktecture IdentityServer

  • Erlang

  • Erlang OAuth 2 Server framework

  • Go

  • Fosite: Extensible security first OAuth 2.0 and OpenID Connect SDK for Go.

  • osin: Golang OAuth2 server library

  • Golang OAuth 2 Server framework

  • gin-oauth2: middleware for Gin Framework users who also want to use OAuth2

  • C

  • Glewlwyd a lightweight OAuth2 server providing JSON Web Tokens and supports authentication with database or LDAP backend for users and clients.

Client Libraries(客户端库)

  • PHP

  • league/oauth2-client: OAuth 2.0 Client from the League of Extraordinary Packages

  • oauth-api from PHP Classes

  • PHP OAuth 2.0 Authorization Code Grant Client

  • OAuth2/OpenID Connect Client Library for PHP/Zend Framework 2

  • Objective C

  • Cocoa

  • iPhone and iPad

  • iOS and Mac OS X (draft 10)

  • YToolkit

  • Swift

  • OAuthSwift

  • p2 OAuth2

  • Java

  • Apache Oltu

  • Spring Social

  • Spring Security OAuth

  • Restlet Framework (draft 30)

  • ScribeJava

  • oauth2-essentials

  • Light Java Client

  • Scala

  • Silhouette

  • Python

  • sanction

  • rauth

  • Authomatic

  • Flask-OAuthlib is an OAuth2 Client/Provider for Flask built upon oauthlib

  • Ruby

  • Ruby Gem

  • Ruby

  • Rack::OAuth2 - OAuth 2.0 Server & Client Library in Ruby.

  • Javascript

  • Javascript

  • OAuth2-client-js

  • Node.js

  • Grant

  • PassportJS

  • OAuth2-client-js

  • Perl

  • Perl OAuth2 Server on Mojolicious

  • .NET

  • OWIN Middleware

  • DotNetOpenAuth

  • DotNetAuth

  • Spring Social for .NET

  • Qt/C++

  • O2 (supports OAuth 1.0a and 2.0)

  • Qt Network Authentication (since 5.8, supports OAuth 1 and 2)

  • Lua/Corona SDK

  • Corona/Lua OAuth 2.0 API

  • Dart

  • Dart OAuth 2.0 Client

  • Go

  • Go OAuth 2.0 Client

  • ActionScript

  • ActionScript OAuth 2

  • PowerShell

  • PowerShell client

Proxy services(代理服务)

  • Hydra an open source OAuth2 and OpenID Connect server for new and existing infrastructures (一个开源的OAuth2 和OpenID Connect服务用于新的和现有的基础设施)
  • OAuth.io (self hosted), and also you can use as an external service
  • SSQ signon (self hosted), and also you can use as an external service
  • Auth0: Authorization Server as a service (or self hosted)
Services that support OAuth 2(支持OAuth2的服务)

  • 37signals (draft 5)
  • Auth0
  • BookingSync
  • Box
  • Beeminder
  • Campaign Monitor
  • Clever
  • Dropbox
  • Facebook's Graph API
  • Foursquare
  • GitHub
  • Google
  • HiDrive
  • Meetup
  • NationBuilder
  • Salesforce
  • Citrix ShareFile
  • Slack
  • SoundCloud
  • Do.com (draft 22)
  • Windows Live
  • time cockpit
  • Zalando's baboon-proxy
Legacy OAuth 1.0 Support(遗留OAuth 1.0支持)

  • See OAuth 1.0

4. Articles

Articles

OAuth社区致力于帮助提供关于OAuth协议的正确使用信息,通过一系列不同主题的文章。

End User Authentication with OAuth 2.0(使用OAuth 2.0的终端用户身份验证)

虽然OAuth本身并不是一种身份验证协议,但是有许多采用OAuth 2.0 构建的高级身份验证协议。本文试图揭示常见的陷阱,并演示如何以安全可靠的方式使用OAuth 2.0进行最终用户身份验证。 how to do end user authentication using OAuth 2.0

OAuth 2 Simplified(简化)

OAuth 2 Simplified by Aaron Parecki 以一种简化的格式描述OAuth 2,以帮助开发人员和服务提供者实现该协议。

OAuth 2.0 Servers (服务)

OAuth 2.0 Servers written by Aaron Parecki and published by Okta,
是构建OAuth 2.0服务器的指南,包括许多不规范的细节。

5. Security

Security Advisories(安全建议)

OAuth社区致力于识别和解决与OAuth协议和扩展相关的任何安全问题。将此页上发表任何已识别的威胁,尽快安全地这样做。由于许多安全威胁的性质,在向脆弱的各方发出充分的通知之前,它们是不可能被披露的。

以下是以知的安全威胁和它们所影响的协议版本:

OAuth 2.0

  • 2014.1 Covert Redirect
OAuth Core 1.0

  • 2009.1 Session Fixation Attack
How to Report Security Threats (如何报告安全威胁)

请向我们报告任何问题 OAuth mailing list(邮件列表),请不要再公共场合讨论未知的安全威胁,因为在应用解决方案之前,它们很可能被攻击者使用。

6. Books

Books

OAUTH 2.0 | 官网直译._第1张图片
[*OAuth 2 in Action*](https://www.manning.com/books/oauth-2-in-action)

OAuth 2 in Action通过Justin Richer and Antonio Sanso 在深度上覆盖了OAuth 2协议。为构建客户端,授权服务器提供实践操作。在各种配置中保护资源。这本书涵盖了OAuth 2系统的结构和组成部分。常见的缺陷和缓解方法,和建立在OAuth 2的基础上的几种协议。练习包括构建整个OAuth 2.0 生态系统的整个过程。

这本书可以从the publisher,Amazon,以及任何技术书籍的销售。

OAUTH 2.0 | 官网直译._第2张图片
[*Mastering OAuth 2.0*](https://www.packtpub.com/application-development/mastering-oauth-2/?utm_source=GC-oauth.net&utm_medium=pod&utm_campaign=1784395407)

Mastering OAuth 2.0 通过Charles Bihis从客户的角度提供了OAuth 2.0协议的深入观点。注重实用性和安全性。本书探讨了客户端与OAuth 2.0 服务提供者集成的各种方式。在此过程中,讨论一些注意事项和最佳实践。

本书关注OAuth 2.0协议的客户端集成方面,对于希望与OAuth 2.0 服务提供者以最安全有效的方式集成的客户端和应用程序开发人员来说,这是理想的选择。

7. About

Credits(关于作者)

这个网站是由Aaron Parecki维护的,Chris Messina来设计的,许多人通过库和其它资源的链接来帮助这个网站。请参阅 more contributors on GitHub.GitHub上的更多贡献者。

Introduction (介绍)
Introduction

由Explaining OAuth于2007年9月5日发表的解释OAuth的解释。


A Little Bit of History(历史一瞥)

OAuth在2006年11月左右开始,而Blaine Cook正在致力于Twitter的OpenID的实现。他与Chris Messina取得了联系,寻找一种使用OpenID和Twitter api来授权身份验证的方法。他们在公民空间的OpenID会议上与David Recordon,Larry Halff和其他人的会面,讨论现有的解决方案。Larry正在考虑为马云整合OpenID。gnolia仪表盘小部件,在审查了现有的OpenID功能和其他行业实践之后,他们得出了一个结论:api访问授权没有开放标准。这段对话在网上持续了几个月。

2007年4月,一个Google小组与一小群实现者创建了一个开放协议的提案。事实证明,这个问题并不是针对OpenID的,当来自谷歌的德维特。克林顿被谷歌发现后,他表达了他对支持这项工作的兴趣,如果只是作为一个利益相关者的话,2007年7月,该团队起草了一份初始规范,并向任何对贡献感兴趣的人开放。在2007年10月3日,OAuth核心1.0最终草案发布。

What is it For?(它是用来干什么的?)

今天许多豪华车都配有一个代客钥匙(注:代客钥匙是一种特殊的钥匙,可以打开车门和点火开关,而不是汽车的后备箱、手套箱或其他安全的储存区域。当你去购物的时候,这是给你的车里停车的人的钥匙),这是一个特殊的钥匙,你给了停车的服务员,而不是给那个常规的钥匙,不允许汽车开超过一英里或两英里。一些代客钥匙不会打开后备箱,而另一些则会阻止你进入你的车载手机通讯录。不管代客钥匙是什么限制,这个想法是非常聪明的,你可以用一个特殊的钥匙有限的进入你的车,同时用你的常规钥匙打开所有东西。

每天都有新的网站推出服务,这些服务可以将其它网站的功能整合在一起。一个照片实验室打印你的在线照片,一个使用你的通讯录来寻找朋友的社交网络,以及api来建立你自己的桌面应用程序版本的流行站点。
这些都是很棒的服务——对于某些实现来说,不太妙的是它们对用户名和密码的请求。当你同意分享你的秘密证书时,你不仅要把你的密码暴露给别人(是的,你同样适用了网上银行的密码),你也可以让他们完全按照他们的意愿去做。他们可以做任何他们想做的事——甚至改变你的密码,把你锁在外面。

这就是OAuth要解决的问题。它允许你,用户,要在你一个站点上授予您的私有资源(既服务提供者),到另一个站点(称为消费者,不要与用户混淆,)尽管OpenID是关于使用一个单一的身份登录到许多站点,但是OAuth是关于在不分享你的身份(或者其它秘密部分)的情况下访问你的东西。

OAuth and OpenID

OAuth不是一个OpenID扩展,在规范级别上,只与OpenID共享少量的内容——一些常见的作者,而且这两个事实都是在身份验证和访问控制领域的开放规范。为什么OAuth不是一个OpenID的扩展?这可能是这个群体胡总最常被问到的问题。答案很简单,OAuth试图为开发人员提供一种标准的方式,让他们可以通过api提供服务,而不必强迫用户暴露自己的密码(以及其他凭证)。如果OAuth依赖于OpenID,那么只有OpenID的服务才能够使用它,尽管OpenID很好,但是有很多应用程序不适合或不需要它。
这并不是说你不能把两者结合在一起,OAuth讨论的是让用户授权访问,而OpenID则是要确保用户确实是他们所说的真正的用户。他们应该一起工作。

Who is Going to Use it?(谁将使用它?)

每一个人,如果你是一个网络开发人员,我们希望。

Is OAuth a New Concept?(OAuth是一个新概念吗?)

不,OAuth是许多成熟的行业协议的标准化和组合智慧。它类似于目前正在使用的其他协议(Google AuthSub, aol OpenAuth, Yahoo BBAuth, Upcoming api, Flickr api, Amazon Web Services api, etc)每个协议都提供了一种专有的方法,用于交换访问令牌或用户凭证的票据。OAuth是通过仔细研究每一种协议并提取最佳实践和共性来创建的,这将允许新的实现以及对现有服务的平稳过渡,以支持OAuth。

OAuth比其他一些协议和服务更进化的领域是它对非网站服务的直接处理。OAuth已经为桌面应用,移动设备,机顶盒,当然还有网站提供了支持。今天的许多协议都是由一个共享的秘密硬编码到您的软件中进行通信,当试图访问您的私有数据的服务是开放源码时,这将引起一个问题。

Design Goals(设计目标)

在开发OAuth时,我们试图尽可能少地开发,遵循微格式的开发,为现有的路径铺平道路,并依赖于谷歌的AuthSub,美国在线的OpenAuth,雅虎的BBAuth和FlickrAuth以及FaceBook的Facebook认证的协议。

当我们想要设计最好的协议时,我们也想要一个人可以使用的,并且它与现有的认证方法兼容,从现有的rfc中继承并重用web标准。通过这种方式,我们最终留下了许多看起来很有趣但最终不属于的规范。

该协议是灵活的,因为它可以适应不同站点的实际安全需求,并且可以通过不同的签名算法和安全特性进行扩展。它还被设计为在移动设备上工作,并明确支持桌面应用程序。

最后,我们努力工作以保持我们对现实世界的关注,并意识到偏离实际或完全理论的方向。我们的原则导致了一个紧凑的协议,可以很容易地阅读和实现,而无需付出大量的努力。为了支持这一目的,我们希望提供大量的库,这些库将极大地减少做正确的事情所需要的工作量,或者从现有的api协议中迁移。

Community(社区)

OAuth社区致力于改进规范和代码库,传播对协议的认识,并通过屏幕,线框图,模型和其他说明性的设计来记录和展示,如果最好地使用OAuth。

IETF OAuth mailing list 邮件 列表用于于IETF标准化相关的工作。

Support(支持)
您可以在search StackOverflow 中搜索与特定于提供程序的OAuth实现相关的问题。

你可能感兴趣的:(OAUTH 2.0 | 官网直译.)